Thank you for your response. I'm using Jaspersoft Studio 6.5.1. The first java file named unilimeFunctions: package unilimeFunctions;import net.sf.jasperreports.functions.annotations.Function;import net.sf.jasperreports.functions.annotations.FunctionCategories;import net.sf.jasperreports.functions.annotations.FunctionParameter;import net.sf.jasperreports.functions.annotations.FunctionParameters;import java.text.DecimalFormat;@FunctionCategories({ UnilimeReportFunctions.class })public class UnilimeFunctions { @Function("ROUND_MW") @FunctionParameters({ @FunctionParameter("DecimalNumber"), @FunctionParameter("DecimalPlaces")}) public static Double ROUND_MW(Double DecimalNumber, Integer DecimalPlaces) { DecimalFormat df = new DecimalFormat(); return 15.0; } @Function("HELLO_WORLD_MSG") public static String HELLO_WORLD_MSG() { return "Hello World!"; } @Function("REPEAT_MSG") @FunctionParameters({ @FunctionParameter("message"), @FunctionParameter("times"), @FunctionParameter("forceUpperCase") }) public static String REPEAT_MSG(String message, Integer times) { return REPEAT_MSG(message, times, false); } public static String REPEAT_MSG(String message, Integer times, Boolean forceUpperCase) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < times; i++) { sb.append(message).append("n"); } String txt = sb.toString(); if (forceUpperCase) { txt = txt.toUpperCase(); } return txt; }}[/code]The second one, unilimeReportFunctions, is empty. As mentioned before: This is the output that I got from following the tutorial. I only added the function ROUND_MW