conda-env version : 4.3.13
conda-build version : 2.1.4
python version : 2.7.13.final.0
rpy2 : 2.8.5
我安装rpy2是为了在Python中使用R。但是在安装conda的R版本中,我在安装“rjava”时遇到了问题。
checking whether Java run-time works... yes
checking whether -Xrs is supported... yes
checking whether JNI programs can be compiled... yes
checking JNI data types... configure: error: One or more JNI types differ from the corresponding native type. You may need to use non-standard compiler flags or a different compiler in order to fix this.
ERROR: configuration failed for package 'rJava'
与我的独立版本的R安装在同一台机器上,我没有问题,所以我知道我有正确的版本安装。
对于我使用相同R版本的两个不同设置(独立R和R with conda),我有相同的Java版本
java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
对于这两个设置,以下变量都不退出
R_JAVA_LD_LIBRARY_PATH
JAVA_HOME
定义了。Standalone的路径非常相似:
PATH=/opt/ccda/anaconda2/bin:/opt/opennlp/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH=/opt/ccda/anaconda2/envs/py27CCA/bin:/opt/ccda/anaconda2/bin:/opt/ccda/anaconda2/bin:/opt/opennlp/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
这里是编译期间的信息。对于独立的R版本:
interpreter : '/usr/bin/java'
archiver : '/usr/bin/jar'
compiler : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags : '-I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux'
java libs : '-L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm
而对于与Conda一起安装的R版本:
interpreter : '/usr/lib/jvm/java/jre/bin/java'
archiver : '/usr/lib/jvm/java/jre/../bin/jar'
compiler : '/usr/lib/jvm/java/jre/../bin/javac'
header prep.: '/usr/lib/jvm/java/jre/../bin/javah'
cpp flags : '-I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux'
java libs : '-L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm'
我尝试使用以下方法获得相同的路径:
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
export R_JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/lib/amd64/server
export JAVA_CPPFLAGS="-I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux"
/usr/bin/java -> /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
R CMD javareconf
interpreter : '/usr/bin/java'
archiver : '/usr/bin/jar'
compiler : '/usr/bin/javac'
header prep.: '/usr/bin/javah'
cpp flags : '-I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux'
java libs : '-L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm'
R CMD javareconf
Java interpreter : /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
Java version : 1.8.0_121
Java home path : /usr/lib/jvm/jre-1.8.0-openjdk.x86_64
Java compiler : /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/../bin/javac
Java headers gen.: /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/../bin/javah
Java archive tool: /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/../bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux
detected JNI linker flags : -L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm
gcc -std=gnu99 -I/opt/ccda/anaconda2/envs/py27CCA/lib/R/include -DNDEBUG -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux -I/opt/ccda/anaconda2/envs/py27CCA/include -fpic -I/opt/ccda/anaconda2/envs/py27CCA/include -c conftest.c -o conftest.o
gcc -std=gnu99 -shared -L/opt/ccda/anaconda2/envs/py27CCA/lib/R/lib -L/opt/ccda/anaconda2/envs/py27CCA/lib -lgfortran -o conftest.so conftest.o -L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm -L/opt/ccda/anaconda2/envs/py27CCA/lib/R/lib -lR
JAVA_HOME : /usr/lib/jvm/jre-1.8.0-openjdk.x86_64
Java library path: /usr/lib/jvm/java/jre/lib/amd64/server
JNI cpp flags : -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include -I/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/../include/linux
JNI linker flags : -L/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/jre/lib/amd64/server -ljvm
Updating Java configuration in /opt/ccda/anaconda2/envs/py27CCA/lib/R
Done.
我完全不明白错误信息的含义。我尝试了所有的建议,从不同的线程有关类似的问题。
编辑:使用导出
LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64:$JAVA_HOME/lib/amd64/server
解决了部分问题(在这种情况下不再需要JAVA_HOME),但我还有其他问题:
/opt/ccda/anaconda2/envs/py27CCA/lib/libiconv.so
/opt/ccda/anaconda2/envs/py27CCA/lib/libiconv.so.2
/opt/ccda/anaconda2/envs/py27CCA/lib/libiconv.so.2.5.1
/opt/ccda/anaconda2/envs/py27CCA/lib/preloadable_libiconv.so
确保使用指向JDK的显式设置重新配置R环境。
确保JAVA_HOME指向JDK
export JAVA_HOME=your_JDK_installation
然后,重新配置R并显式传递所有位置
sudo R CMD javareconf \
JAVA_HOME=${JAVA_HOME} \
JAVA=${JAVA_HOME/bin/java \
JAVAC=${JAVA_HOME}/bin/javac \
JAVAH=${JAVA_HOME}/bin/javah \
JAR=${JAVA_HOME}/bin/jar \
JAVA_LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/server \
JAVA_CPPFLAGS="-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux"
curl https://cran.r-project.org/src/contrib/rJava_0.9-8.tar.gz -o rJava_0.9-8.tar.gz
tar zxf rJava_0.9-8.tar.gz
cd rJava
./configure
在R3.0.1上安装rJava时,我遇到了这个问题:“configure:error:一个或多个JNI类型不同于对应的本机类型” 详细消息附于下文。我搜索了类似的问题,但我的问题有点棘手,许多建议的解决方案要么不起作用,要么我无法尝试,因为我工作的服务器没有系统库的写访问权限。 操作系统:Linux 2.6.18-348.6.1.EL5#1 SMP Tue 5月21日15:44:27 EDT 20
我在R3.0.1上安装rJava时遇到了这个问题:"配置:错误:一个或多个JNI类型不同于相应的本机类型" 详细信息附于下文。我搜索了类似的问题,但我的问题有点棘手,许多建议的解决方案要么不起作用,要么我无法尝试,因为我使用的服务器没有对系统库的写访问权限。 操作系统:Linux 2.6.18-348.6.1。el5#1 SMP Tue May 21 15:44:27美国东部夏令时2013 x86
这个应用程序的每个JVM应该使用相同的数据库吗?否则跟踪令牌不会在同一个应用程序中“共享”? 如何在运行传奇的相同应用程序中拆分事件?一个saga类型或saga实例是否总是在同一个应用程序上处理(直到它被关闭,所以另一个实例负责它)? 还是每个JVM都接收事件,并且每个相同类型的传奇都将运行?(并导致发送重复命令和错误) 等。还有很多问题。
我有一个json格式的地图列表,我正试图在列表上呈现“title”。 我通过一个api(http.get)读取数据,然后解析它。 我想在列表中显示标题。 这是我的代码... 获取数据 转换为json 欢迎参加模范班 我得到一个错误说"类型'列表'不是类型'地图的子类型
问题内容: 我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码: 编译以上内容时,javac抱怨重复的注释: 这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗? 如果上述方法不可行,有哪些可能的解决方法? 更新:我被要求描述我的用例。开始。 我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。
我有两个外部模型相同的API,所以我为外部模型(ResponseModel)和结果键创建了一个模型类,我为结果键创建了一个名为ResultModel的类,所以我可能能够编写结果键上可能出现的所有响应 在这里,我添加了ResultModel结果键中可能的响应,将给出国家列表或州列表 CountryList API 1结果 状态列表API 2结果 我遵循这个结构来重用外部模型。但它不起作用 不管怎样,