【问题标题】:error: unable to load installed packages just now错误:无法加载刚刚安装的包
【发布时间】:2012-10-04 01:46:13
【问题描述】:

当我尝试在 Eclipse 中运行 R 控制台时,我收到了这个错误:

....Please make sure that R package 'rj' (1.1 or compatible) is installed...

所以我尝试像这样在 R 控制台中安装它:

install.packages(c("rj", "rj.gd"), repos="http://download.walware.de/rj-1.1")

得到了这个错误:

 ** testing if installed package can be loaded
 Error : .onLoad failed in loadNamespace() for 'rj.gd', details:
 call: dyn.load(file, DLLpath = DLLpath, ...)
 error: unable to load shared object '/home/alex/R/x86_64-pc-linux-gnu-library/2.15/rj.gd/libs/rj.gd.so':
 libjvm.so: cannot open shared object file: No such file or directory
 Error: loading failed
 Execution halted
 ERROR: loading failed

我发现在安装 rJava 时使用:install.packages("rJava") 会出现类似的错误:

** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/alex/R/x86_64-pc-linux-gnu-library/2.15/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
Error: loading failed
Execution halted
ERROR: loading failed

当我运行sudo R CMD javareconf 时,我得到了这个输出:

Java interpreter : /usr/bin/java
Java version     : 1.7.0
Java home path   : /usr/lib/jvm/java-7-oracle/jre
Java compiler    : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
NOTE: Your JVM has a bogus java.library.path system property!
Trying a heuristic via sun.boot.library.path to find jvm library...
Java library path: $(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/lib/amd64/server
JNI linker flags : -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/lib/amd64/server -ljvm
JNI cpp flags    : -I$(JAVA_HOME)/../include -I$(JAVA_HOME)/../include/linux

Updating Java configuration in /etc/R
Done.

顺便说一下,我的配置是:

Ubuntu 11.10 64bit
Eclipse 3.7
Oracle-1.7-jdk
R version 2.15.1 

【问题讨论】:

    标签: java eclipse r ubuntu statet


    【解决方案1】:

    我找到了解决办法:

    export LD_LIBRARY_PATH=/usr/lib/jvm/java-7-oracle/lib/amd64:/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server
    

    然后

    sudo R CMD javareconf
    

    注意:路径 (java-7-oracle) 需要根据您的 Java 安装进行更新。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,并且能够通过运行解决它

      R CMD javareconf -e
      

      R CMD javareconf -e 的输出

      Java interpreter : /export/apps/jdk/JDK-1_6_0_27/jre/bin/java
      Java version     : 1.6.0_27
      Java home path   : /export/apps/jdk/JDK-1_6_0_27
      Java compiler    : /export/apps/jdk/JDK-1_6_0_27/bin/javac
      Java headers gen.: /export/apps/jdk/JDK-1_6_0_27/bin/javah
      Java archive tool: /export/apps/jdk/JDK-1_6_0_27/bin/jar
      Java library path: /export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server:/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64:/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
      JNI linker flags : -L/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server -L/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64 -L/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib64 -L/lib64 -L/lib -L/usr/lib -ljvm
      JNI cpp flags    : -I/export/apps/jdk/JDK-1_6_0_27/include -I/export/apps/jdk/JDK-1_6_0_27/include/linux
      
      The following Java variables have been exported:
      JAVA_HOME JAVA JAVAC JAVAH JAR JAVA_LIBS JAVA_CPPFLAGS JAVA_LD_LIBRARY_PATH
      Running: /bin/bash
      

      将LD_LIBRARY_PATH 设置为与JAVA_LD_LIBRARY_PATH 相同的值后,如上面的输出所示。我能够安装 rj。

      export LD_LIBRARY_PATH=/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64/server:/export/apps/jdk/JDK-1_6_0_27/jre/lib/amd64:/export/apps/jdk/JDK-1_6_0_27/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
      

      运行 R 然后安装 rj by

      install.packages(c("rj", "rj.gd"), repos="http://download.walware.de/rj-1.1")
      

      【讨论】:

      • 如果您使用 RStudio,您可能还需要通过 service rstudio-server restart 重新启动它
      • 只需在命令行中输入 export。遵循@user73515 提到的内容后,您可能会看到 LD_LIBRARY_PATH 已更新
      【解决方案3】:

      当遇到缺少的limjvm.so 错误时,请确保从/etc/R 的标准配置中选择正确的ldpaths,而不是从/usr/lib/R/etc 中选择正确的/usr/lib/R/etc。

      【讨论】:

        【解决方案4】:

        这为我解决了 LD_LIBRARY_PATH 问题(Linux、Debian 7.1.0、tc-shell、R 版本 3.0.2):

        将此行添加到 .cshrc:

        setenv LD_LIBRARY_PATH $JAVA_HOME/jre/lib/amd64:$JAVA_HOME/jre/lib/amd64/server

        将此命令添加到 ~/.login 是不够的;环境变量 LD_LIBRARY_PATH 在新的 xterms 中仍然未知: echo $LD_LIBRARY_PATH : LD_LIBRARY_PATH: Undefined variable。 (为什么??)

        奇怪的是,当以超级用户身份启动 R 时,找到 libjvm.so 没有问题。

        【讨论】:

          【解决方案5】:

          对于 Linux(Ubuntu) 用户:如果您安装了 oracle-java (7/8)。它将在此位置 /usr/lib/jvm 和 sudo 需要访问权限。

          使用以下条目创建文件/etc/ld.so.conf.d/java.conf:

          /usr/lib/jvm/java-8-oracle/jre/lib/amd64
          /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server
          

          (根据您的 java 版本,将 java-8-oracle 替换为 java-7-oracle)

          然后:

          sudo ldconfig
          

          重启 RStudio,然后安装 rJava 包。

          或

          另一种方法是使用从命令R CMD javareconf -e 获得的Java 库路径的值导出LD_LIBRARY_PATH 并运行install.packages

          【讨论】:

          • 干得好!你能解释一下你做了什么吗?我不清楚(但我很高兴,因为它有效!)。非常感谢!
          • ldconfig 是一个将配置动态链接器运行时绑定的命令。它创建和更新运行时链接器使用的必要链接和缓存。
          • 由于某种原因运行 ldconfig 告诉我我的 /usr/lib/libjvm.so 是“空的”。我通过 sudo ln -s /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so 解决了这个问题(你应该使用你自己的 java 版本)
          • @ThomasLuechtefeld:是的,没错。您必须按照答案“取决于您的 java 版本”中提到的方式对其进行修改。感谢您在评论中提到命令。
          • 对我来说很棒!谢谢!
          【解决方案6】:

          或者只是在 R 中设置库?

          我刚刚在 R 中运行了这个命令:

          Sys.setenv(JAVA_HOME='/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server')
          

          (将“/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server”替换为运行“sudo R CMD javareconf”的Java库路径)

          可能不是最优雅的解决方案 - 但它对我有用!

          【讨论】:

            【解决方案7】:

            我做了以下,它对我有用:

            export LD_LIBRARY_PATH=$JAVA_LD_LIBRARY_PATH
            sudo R CMD javareconf
            

            我也不得不重新启动 R。

            【讨论】:

            • 我浪费了很多时间,直到我找到你的答案,关键是以root身份运行第二个命令。
            【解决方案8】:

            我没有安装可以修复的 jdk sudo apt-get install jdk-* 之后我可以运行sudo R CMD javareconf,它之前总是会出现错误消息。一切都设置正确,不需要手动 tweeks,之后包安装在 R 中顺利运行(需要重新启动)。

            【讨论】:

              【解决方案9】:

              我通过使用 sudo 运行 R,然后运行 ​​install.packages('rJava`) 来解决此问题。

              【讨论】:

                【解决方案10】:

                以上都不适合我,在Linux Ubuntu上安装rJava没有任何问题的唯一解决方案是在安装基本R之后通过RScript命令:

                $ sudo Rscript -e 'install.packages("rJava", repos = "http://cran.r-project.org/")'
                

                【讨论】:

                  【解决方案11】:

                  多年后,在我没有成功安装需要转移到 Oracle 的 Java 的软件包后,我搜索了 R 报告的错误后,最终提出了这个问题。

                  我所要做的就是修复它:

                  $ sudo R CMD javareconf

                  【讨论】:

                  • 我说得太早了。问题再次出现,再次运行javareconf 这次并没有解决它。此外,将sudo R 运行到install.packages("rJava") 也没有修复它。
                  • +1 这个命令似乎修复了一些环境参数,但仍然在尝试安装 rJava,对此here 有什么想法吗?
                  • 有人能详细解释一下R CMD javareconf 是做什么的吗?
                  猜你喜欢
                  • 2018-11-29
                  • 1970-01-01
                  • 2012-10-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多