data Numbers;
do i=1 to 10;
output;
end;
run;
data PrimeNumbers;
set Numbers;
if _N_=1 then declare javaobj j("C:\Program Files\Java\jdk1.7.0_10\bin\checkPrimeNumber");
isPrimeNumber=j.callIntMethod("checkPrimeNumber",i);
if isPrimeNumber=1 then output;
run;
/*-SET CLASSPATH "C:\Program Files (x86)\Java\jre7\bin"*/
/*--------------------------Sample java code----------------------------
public class checkPrimeNumber
{
public checkPrimeNumber()
{
}
public static void main(String args[])
{
checkPrimeNumber CPN=new checkPrimeNumber();
System.out.println ("Result:"+CPN.checkPrimeNumber(23));
}
public int checkPrimeNumber(int num)
{
for (int i=2; i<=(num/2); i++)
if ((num%i) == 0)
return 0;
return 1;
}
}
--------------------------------------------------------------------------*/
日志:-------&GT;
ERROR: Could not find class C:\checkPrimeNumber at line 45 column 44. Please ensure that the
CLASSPATH is correct.
ERROR: DATA STEP Component Object failure. Aborted during the EXECUTION phase.
java.lang.ClassNotFoundException: C:\checkPrimeNumber
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
我已将CLASSPATH
环境变量设置为
C:\Program Files\Java\jdk1.7.0_10\bin
并编译了&amp;从命令提示符执行程序。代码在命令提示符下工作正常。但SAS代码抛出错误,所以我添加了-set CLASSPATH
C:\ Program Files \ Java \ jdk1.7.0_10 \ bin statement in
sasv9.cfg located at
SASFoundation \ 9.3 \ nls \ en` 。我仍然得到相同的错误(与上面提到的相同)。可能有什么不对?我应该在SAS文件/文件夹中添加classpath变量,以便SAS识别java类路径?
答案 0 :(得分:2)
在sasv9.cfg文件中,您应该查找-JREOPTIONS选项。在此选项中添加参数-Dsas.app.class.path
的路径在数据步骤中声明java对象时,您只能传递类名 - 而不是所有路径。因此声明应如下:
declare javaobj j("checkPrimeNumber")
最后一个。 java方法的返回值传递给数据步骤函数中的最后一个参数。调用java方法应该是这样的:
j.callIntMethod("checkPrimeNumbers",i,isPrimeNumber);
干杯, 克里斯
答案 1 :(得分:0)
尝试运行PROC JAVAINFO以确定您的类路径是否设置正确。可以在不同的地方以多种方式设置类路径。完全有可能在以后的加载过程中被覆盖。
另外,您在哪种服务器上运行代码?是远程还是本地?
要在datastep中设置运行时的类路径,请遵循以下建议:http://support.sas.com/kb/38/518.html
Vasilij