Calling java problem

I have a simple java file, the jar is in my bundles directory

public class FirstJavaProgram4 {
   
  public String mytest(String[] args){
    return "Success! from mytest()";
  }
 
}

when I dump it I can see the method: mytest()

<cfset variables.javatest = CreateObject("java", "FirstJavaProgram4", "FirstJavaProgram4", "1.0.0")>
<cfdump var="#javatest#">

2020-07-10_13-50-28
However when I call it I get No matching Method for mytest() found for FirstJavaProgram4

<cfset variables.javatest = CreateObject("java", "FirstJavaProgram4", "FirstJavaProgram4", "1.0.0")>
<cfdump var="#javatest.mytest()#">

I created a manifest:
Manifest-Version: 1.0
Created-By: 1.8.0-ea (Oracle Corporation)
Main-Class: FirstJavaProgram4
Bundle-Name: FirstJavaProgram4
Bundle-SymbolicName: FirstJavaProgram4
Bundle-Version: 1.0

To create the jar I first compiled it: javac FirstJavaProgram4.java
Then the jar:
jar cmf FirstJavaProgram4.mf FirstJavaProgram4.jar FirstJavaProgram4.class FirstJavaProgram4.java

jar can be found here: https://ag-1.s3.amazonaws.com/FirstJavaProgram4.jar

I can’t see why this isn’t working, any ideas?

Thanks.

Try passing in a string as the argument?

already tried that…(also just tried lowercasing everything, so that doesn’t appear to be the problem)

Found the problem!!
It was expecting an array.

public String mytest(String[] args)

so this works:

<cfdump var="#javatest.mytest(['hello'])#">
1 Like