【问题标题】:Weka ClassNotFoundExceptionWeka ClassNotFoundException
【发布时间】:2011-12-17 09:25:26
【问题描述】:

我正在尝试安装已安装到 /weka 目录中的 Weka。我设置了 CLASSPATH 变量,但这并不重要,因为我使用的是 -cp。

我在 SSH 中输入这个:

java -Xmx5G -cp /weka/weka.jar weka.core.converters.TextDirectoryLoader -dir /home/myuser/test > /home/myuser/test.arff

然后吐出来:

线程“主”java.lang.NoClassDefFoundError 中的异常: weka/core/converters/TextDirectoryLoader 原因: java.lang.ClassNotFoundException: weka.core.converters.TextDirectoryLoader 在 java.net.URLClassLoader$1.run(URLClassLoader.java:217) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主类:weka.core.converters.TextDirectoryLoader。 程序将退出。

怎么了?没有“weka/core/converters/TextDirectoryLoader”,因为它都存储在 weka.jar 中,这是它应该查找的位置。

我的 Java 版本:

java版本“1.6.0_20”OpenJDK运行环境(IcedTea6 1.9.10) (rhel-1.23.1.9.10.el5_7-x86_64) OpenJDK 64 位服务器虚拟机(构建 19.0-b09,混合模式)

我今天刚从他们下载页面上的链接下载了 Weka,所以应该没有什么问题。

现在我知道这通常是因为它找不到 weka.jar,但我向你保证它就在:/weka/weka.jar。而且我还可以保证/weka目录和weka.jar都有执行权限。

请帮忙!

【问题讨论】:

  • 不存在的!我决定继续解压 jar 文件,发现没有 weka/core/converters/TextDirectoryLoader.class!那里发生什么了?其他人似乎都有它。

标签: java noclassdeffounderror weka classnotfoundexception


【解决方案1】:

只需下载并运行 .jar 即可:

carsten@dallas:~$ java -Xmx5G -cp /tmp/weka-3-6-5/weka.jar weka.core.converters.TextDirectoryLoader

Usage:
  TextDirectoryLoader [options]

Options:
...

还有java -jar /tmp/weka-3-6-5/weka.jar,它会打开一些GUI工具。

您确定在您通过 SSH 连接的服务器上安装了 Weka?

【讨论】:

  • 注意:我没有运行完全相同版本的 OpenJDK:OpenJDK Runtime Environment (IcedTea6 1.9.9) (6b20-1.9.9-0ubuntu1~10.10.2)
  • 很有趣,因为我刚刚测试了 weka.filters.unsupervised.attribute.StringToWordVector 并且加载正常。只有 weka.core.converters.TextDirectoryLoader 似乎是不可见的。
  • 该 .jar 的路径中是否有任何(甚至是微小的)拼写错误的可能性?也许有些字符大写?还是版本问题?我从 SF 下载了最新版本,但可能你的服务器上的旧版本缺少 weka.core.converters.TextDirectoryLoader...
  • 你可以试试jar tf /weka/weka.jar | grep TextDirectoryLoader看看这个类是否在.jar中。
  • 您从 Weka 网站下载了哪个版本?快照还是马厩? Linux?
【解决方案2】:

当我使用 dmg 打包中发布的 jar 时,我在 Mac OS 中发生了同样的情况。

我在下面导入了jar文件,而不是那个:

Applications/Weka/Resources/java/weka.jar

要获得它,您必须:

  1. 转到应用程序
  2. 在 weka-3-x-x 上单击鼠标右键
  3. 显示包内容
  4. 转到/Resources/java/weka.jar
  5. 将那个 jar 文件导入到你的类路径中

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 2023-03-16
    • 2018-12-23
    • 2021-03-22
    • 2014-04-18
    • 2014-10-01
    • 2019-08-28
    • 2013-10-10
    相关资源
    最近更新 更多