Java 来自命令行MacOS的Weka

Java 来自命令行MacOS的Weka,java,macos,classpath,weka,cp,Java,Macos,Classpath,Weka,Cp,我通常在Linux系统上使用命令行中的Weka对属性执行功能选择,如下所示: java -cp PATH_TO_WEKA_JAR weka.attributeSelection.CfsSubsetEval ... (other parameters) 我试图在Mac OS上运行相同的代码,但出现以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: weka.attributeSelection.CfsSubsetEv

我通常在Linux系统上使用命令行中的Weka对属性执行功能选择,如下所示:

 java -cp PATH_TO_WEKA_JAR weka.attributeSelection.CfsSubsetEval ... (other parameters)
我试图在Mac OS上运行相同的代码,但出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: weka.attributeSelection.CfsSubsetEval
Caused by: java.lang.ClassNotFoundException: weka.attributeSelection.CfsSubsetEval
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
如何在Mac OS上运行相同的命令?不应该与基于UNIX的操作系统相同吗?
我还尝试将路径包含在内,但没有区别。怎么了?

我猜Weka jar文件有问题。它告诉您在文件中找不到特定的类

Mac OS在很大程度上已经脱离了Unix,这可能需要使用不同的JAR文件

这可能会帮助您:Weka站点下载

尝试以下命令:

jar tf PATH_TO_WEKA_JAR | grep weka.attributeSelection.CfsSubsetEval
在输出中,您应该看到一行weka.attributeSelection.CfsSubsetEval.class。 如果您没有看到这样的行,那么jar文件不包含该类, 而且命令无法工作。 在这种情况下,请尝试运行以下命令:

jar tf PATH_TO_WEKA_JAR | less
只需查看jar文件中的内容

无论如何,这是一个简单的类路径问题: 类weka.attributeSelection.CfsSubsetEval根本不在类路径上。 你需要找到罐子的正确路径, 也可能是其他依赖项, 并构造要在中使用的正确参数:

java -cp CORRECT_CLASSPATH weka.attributeSelection.CfsSubsetEval   # ... your other params

这就是重点。Mac OS在很大程度上已经脱离了Unix,这可能需要使用不同的JAR文件。这可能对你有帮助:你试过我回答中的建议了吗?