0

我尝试安装 R 包“RWekajars”。不幸的是,我收到以下错误消息:

* installing *source* package ‘RWekajars’ ...
** Paket ‘RWekajars’ erfolgreich entpackt und MD5 Summen überprüft
Exception in thread "main" java.lang.NoClassDefFoundError: getsp
Caused by: java.lang.ClassNotFoundException: getsp
        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)
Could not find the main class: getsp.  Program will exit.
./configure: Zeile 50: test: -ge: Einstelliger (unärer) Operator erwartet.
./configure: Zeile 51: test: -eq: Einstelliger (unärer) Operator erwartet.
Need at least Java version 1.5/5.0.

我使用的是 Ubuntu 11.04,但我在 Ubuntu 10.10 上遇到了同样的问题。

刷新 R - Java 配置

R CMD javareconf

没有帮助

我在两台机器上遇到问题,一台运行 Oracle Java (1.6.0_26),另一台运行 OpenJDK (1.6.0)。所以错误信息

Need at least Java version 1.5/5.0 

似乎没有道理。此外,只安装了一个 java 版本。

4

1 回答 1

3

解决方案(至少对于 ubuntu):

打开终端并执行

export CLASSPATH=/usr/share/R/share/java

在同一个终端窗口中

R
> install.packages("RWekajars")

完毕。

如何获得解决方案(如果您正在运行另一个操作系统或发行版,这应该会对您有所帮助):

为了解决这个问题,我首先使用

download.packages("RWekajars")

在配置脚本中,您会看到 R 使用

java_version=`${JAVA} getsp "java.version"`

我用了

locate getsp

并发现:

/usr/share/R/share/java/getsp.class

因此,getsp 类存在,但 R 找不到它。这就是为什么我们在执行 R 之前将 CLASSPATH 变量设置为 /usr/share/R/share/java。这样 R 在安装过程中知道在哪里可以找到 getsp 程序。如果您的 getsp.class 在另一个目录中,您必须更改导出语句中的路径。

希望这对某人有所帮助,因为我花了一段时间才弄清楚这一点。

PS:这个问题在 ubuntu 12.04 上不会发生 - 至少现在是这样。

于 2012-06-01T18:27:49.583 回答