我正在尝试在我的webstart应用程序中加载JRI . 我总是得到这个例外:

Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.

JNLP文件:

...
<resources>
    ...
    <jar href="JRI.jar" />
    ...

    <nativelib href="JRI.jar" />

</resources>
...

我使用批处理脚本在Windows 7下运行我的应用程序:

set R_HOME=C:\ProgramData\R\R-2.14.0
set R_PATH=C:\ProgramData\R\R-2.14.0\library\rJava\jri
set JNLP_URL=http://localhost/app/app.jnlp
set WEBSTART="C:\Program Files\Java\jre7\bin\javaws.exe"

SET PATH=%PATH%;%R_HOME%\bin\i386;%R_PATH%

%WEBSTART% %JNLP_URL%

我尝试使用sh脚本在Linux(Ubuntu)下启动我的应用程序:

#!/bin/bash

export R_HOME=/usr/lib/R/
export r_home=/usr/lib/R/
export rHome=/usr/lib/R/
export rhome=/usr/lib/R/
export rHOME=/usr/lib/R/

export R_PATH=/usr/lib/R/site-library/rJava/jri/
export r_path=/usr/lib/R/site-library/rJava/jri/
export rPath=/usr/lib/R/site-library/rJava/jri/
export rPATH=/usr/lib/R/site-library/rJava/jri/
export rpath=/usr/lib/R/site-library/rJava/jri/

export WEBSTART=/usr/lib/jvm/java-7-oracle/jre/bin/javaws

export JNLP_URL=http://localhost/app/app.jnlp

export PATH=$PATH:$R_HOME/bin:$R_PATH

$WEBSTART $JNLP_URL

出于某种原因,它可以在Windows下运行,但不能在Linux下运行 . 两个批处理脚本应该做同样的事情......

该应用程序在Windows和Linux下都可以正常工作,直到我尝试使用试图使用R的方法 .

当我使用以下sh脚本作为非webstart版本启动我的应用程序时,它也完全可以工作(包括R):

#!/bin/bash
export R_HOME=/usr/lib/R/
export rPATH=/usr/lib/R/site-library/rJava/jri/
export JAVA=/usr/lib/jvm/java-7-oracle/jre/bin/java
LIB=<<Libraries>> # I left out this very long line for this post :)
$JAVA -classpath $LIB:. -Djava.library.path=./FAST:$rPATH de.app.MainWindow $*

我不知道为什么它不能与webstart和Linux一起工作......

A jar -tvf JRI.jar 给了我:

0 Sun Oct 07 12:28:14 CEST 2012 META-INF/
    68 Sun Oct 07 12:28:14 CEST 2012 META-INF/MANIFEST.MF
     0 Sun Oct 07 12:28:12 CEST 2012 org/
     0 Sun Oct 07 12:28:12 CEST 2012 org/rosuda/
     0 Sun Oct 07 12:28:12 CEST 2012 org/rosuda/JRI/
  1079 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RVector.class
   582 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RMainLoopCallbacks.class
  2158 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RList.class
  1723 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RFactor.class
 10424 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/Rengine.class
   734 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RBool.class
  1010 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/RConsoleOutputStream.class
  3082 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/Mutex.class
  9887 Sun Oct 07 12:28:14 CEST 2012 org/rosuda/JRI/REXP.class
190345 Sun Oct 07 12:28:12 CEST 2012 libjri.so

JaNeLA给了我

XML encoding not known, but declared as utf-8
'short' description is longer than 'default' description.

对于我指定的每个资源jar(persistence-api-1.0.jar的示例):

Downloads can be optimized by specifying a resource size for 'persistence-api-1.0.jar'.
The resource download at persistence-api-1.0.jar can be optimized by removing the (default) value of download='eager'.
The resource download at persistence-api-1.0.jar can be optimized by removing the (default) value of main='false'.
It might be possible to optimize the start-up of the app. by  specifying download='lazy' for the persistence-api-1.0.jar resource.
Lazy downloads might not work as expected for persistence-api-1.0.jar unless the download 'part' is specified.

所有这些通知都是绿色或黄色 .