Weka来自命令行Mac OS

时间:2014-12-14 20:12:20

标签: 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.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的操作系统相同吗? 我也尝试在" "中包含路径,但没有区别。什么是错的?

2 个答案:

答案 0 :(得分:0)

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

Mac OS已经从Unix发展了很多,这可能使得必须使用差异JAR文件。

这可能对您有所帮助:Weka网站下载

答案 1 :(得分:0)

尝试此命令:

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根本不在您的类路径上。 你需要找到jar的正确路径, 也可能是其他依赖项, 并构造正确的参数用于:

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