Perl内联::Java没有为类“”定义公共方法“”

Perl内联::Java没有为类“”定义公共方法“”,java,perl,inline,Java,Perl,Inline,我正在寻找一些帮助,通过perl内联::Java使这段代码正确运行。 我的问题发生在调用传递两个参数的愚蠢方法时。 下面附加的apache日志没有返回为类“main::MathFunctions”定义的公共方法“dumby” 注意:第342行是print$jfunc->dumby$tapsRe{$i},$tapsIm{$i}\N 我的另一个方法是在MathFunctions类中使用它,效果很好。 有人能指出我这里缺少的东西吗 BEGIN { $ENV{CLASSPATH} .= ":/var/w

我正在寻找一些帮助,通过perl内联::Java使这段代码正确运行。 我的问题发生在调用传递两个参数的愚蠢方法时。 下面附加的apache日志没有返回为类“main::MathFunctions”定义的公共方法“dumby”

注意:第342行是print$jfunc->dumby$tapsRe{$i},$tapsIm{$i}\N 我的另一个方法是在MathFunctions类中使用它,效果很好。 有人能指出我这里缺少的东西吗

BEGIN {
$ENV{CLASSPATH} .= ":/var/www/java/commons-lang-2.6/commons-lang-2.6.jar";
$ENV{CLASSPATH} .= ":/var/www/java/commons-math-2.2/commons-math-2.2.jar";
}
use Inline::Java;
use Inline (Java => <<'END_OF_JAVA_CODE', AUTOSTUDY => 1, DEBUG => 6,

import org.apache.commons.math.complex.*;
import org.apache.commons.math.MathException;
import org.apache.commons.math.transform.FastFourierTransformer;
import java.util.*;


class MathFunctions {



public static int twoComplimentNbit(int val, int bits) {
val &= (int) (1 << bits) - 1;

int R = (int) (1 << bits - 1);

if (val < R) {
return val;
} else {
return val - R * 2;
}
}




public double stupid (float REAL, float IMG) {
Complex result = new Complex(REAL,IMG);
double realOne = result.getReal();
double imgOne = result.getImaginary();
return realOne;

}


}
END_OF_JAVA_CODE
SHARED_JVM => 1,
DIRECTORY => '/tmp',
);

my $jfunc = new MathFunctions();

你确定你把它称为非静态的对象方法而不是静态的类方法吗?我已经做过一次了。我无法让AUTOSTUDY工作,所以我试着学习。我还将我的Java代码放在程序末尾的_DATA__;下。你可以看看我的问题,看看能不能让它起作用。也许它会给你一些想法。输出不是来自你发布的内容。请提供一个最小的、可运行的问题演示,以及该代码的输出。因此,这是一个权限问题。存储.jar文件的目录没有为www-data-apache-user设置+r,构建目录不可写。谢谢你在这方面的帮助。
[Fri Jun 27 16:11:45 2014] [error]  [perl][3]   packet sent is call_method 2031 MathFunctions      fastAtan2 (double,double) scalar:LTAuMDAxOTU2OTY5NjQ2MDM2Mzc= scalar:MC4wMDE5NTY5Njk2NDYwMzYzNw==
[Fri Jun 27 16:11:45 2014] [error]  [perl][3]   packet recv is ok scalar:LTAuNzg1Mzk4Mg==
[Fri Jun 27 16:11:45 2014] [error]  [perl][5]     stupid
[Fri Jun 27 16:11:45 2014] [error]  No public method 'stupid' defined for class 'main::MathFunctions' at /var/www/pre_eq-dev.cgi line 342
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object::Tie
[Fri Jun 27 16:11:45 2014] [error]  [perl][2]  destroying object in java (main::MathFunctions):
[Fri Jun 27 16:11:45 2014] [error]  [perl][3]   deleting object main::MathFunctions=HASH(0x8cd4248) 2031 (MathFunctions)
[Fri Jun 27 16:11:45 2014] [error]  [perl][3]   packet sent is delete_object 2031
[Fri Jun 27 16:11:45 2014] [error]  [perl][3]   packet recv is ok undef:
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Protocol
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object::Private
[Fri Jun 27 16:11:45 2014] [error]  [perl][1] killed by natural death.
[Fri Jun 27 16:11:45 2014] [error]  [perl][1] JVM non-owner exiting...
[Fri Jun 27 16:11:45 2014] [error]  [perl][1] exiting with 9
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object::Tie
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    script marked as DONE, object destruction not    propagated to Java
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Protocol
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object::Private
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    destroying Inline::Java::Object::Tie
[Fri Jun 27 16:11:45 2014] [error]  [perl][4]    script marked as DONE, object destruction not propagated to Java