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