我无法将我的java项目从eclipse导出为jar可执行文件.我的java项目使用外部库(称为jri).我已经导出了jri.jar文件并在eclipse中为其本机库设置了库路径,并且它在eclipse中的开发中运行良好.但是,当我将其导出为可执行jar文件时,我收到以下错误:
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.
Run Code Online (Sandbox Code Playgroud)
我把一个名为lib的文件夹放在与我的项目jar相同的目录中; 这个lib文件夹包含jri的本机库.jri的本机库不在一个文件中,而是在一个文件夹中.这与我在eclipse中的设置相同.
我在eclipse中导出项目的方式是
Export...
Java > Runnable JAR file
Copy required libraries into a sub folder next to the generated Jar
Finish
Run Code Online (Sandbox Code Playgroud)
我的文件夹是这样组织的
folder project
project.jar
project_lib
jri.jar
jri native library folder
Run Code Online (Sandbox Code Playgroud)
我的project.jar的MANIFEST.MF是:
Manifest-Version: 1.0
Class-Path: . project_lib/jri.jar
Main-Class: index
Run Code Online (Sandbox Code Playgroud)
我想要实现的是给另一个人一个文件夹,包括project.jar和其他任何需要的东西,这样她/他就可以运行它而无需安装任何其他东西.非常感谢
我正在使用JRI从Java生成ggplot2图.目前我必须将图表写入磁盘.如何在不经过文件的情况下完成此操作,即只在内存中渲染图形?
我尝试使用Cairo包绘制到一个textConnection,但是如果没有"R Connections Patch",这在谷歌搜索结果是古老的历史之后就不行了.
我正在使用JRI作为Java内部统计数据的计算从属.R计算是不时需要的,但不是太频繁.因此,我决定为计算创建一个包装器方法,该方法创建一个新的REngine实例,并在结束时关闭它.第一次调用方法时,一切都像魅力一样.不幸的是,再次调用它会触发错误"R已经初始化".
初始化:
private static Rengine createEngineInstance(){
//Initialise R Engine.
Rengine re=new Rengine (new String [] {"--vanilla"}, false, new CallbackListener());
//Wait until REngine-thread is ready
if (!re.waitForR())
{
System.err.println ("Cannot load R. Is the environment variable R_HOME set correctly?");
System.exit(1);
}
return re;
}
Run Code Online (Sandbox Code Playgroud)
包装方法:
public static void performR(){
//Create instance of R engine
Rengine re = createEngineInstance();
//Perform some R operations
re.eval("...");
re.end();
}
Run Code Online (Sandbox Code Playgroud)
显然,REngine实例未正确终止.因此,我需要知道:1)是否有机会终止REngine并再次创建新实例?这是如何正常工作的?我知道用JRI同时运行多个R线程是不可能的,但这不是我的目标.2)如果不是这种情况,我会使用Singleton模式创建一个实例.在这种情况下,如何确保在程序终止时R会话关闭?
非常感谢您的帮助!谢谢!
我有这段简单的代码试图加载JRI模块.
public static void main(String... args) {
System.out.println(System.getProperty("java.library.path").toString());
System.setProperty("jri.ignore.ule", "yes");
System.loadLibrary("jri");
}
Run Code Online (Sandbox Code Playgroud)
我将java.library.path作为VM参数传递,但JRI无法加载以下错误:
C:\Users\Abhishek\Documents\R\win-library\3.1\rJava\jri;C:\Users\Abhishek\Documents\R\win-library\3.1\rJava
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Abhishek\Documents\R\win-library\3.1\rJava\jri\jri.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1929)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1847)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at pack.TestJRI.main(TestJRI.java:10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
我正在运行我的JRI(Java-R接口)包附带的测试类.我正在通过NetBeans运行它.不幸的是,NetBeans抱怨没有设置R_HOME.
Creating Rengine (with arguments)
Rengine created, waiting for R
R_HOME is not set. Please set all required environment variables before running this program.
Cannot load R
Unable to start R
Run Code Online (Sandbox Code Playgroud)
如何在NetBeans中添加R_HOME环境变量?
我尝试过的:
/Library/Frameworks/R.framework/Resources我只是一些解决方案(过去半小时).
export R_HOME=/path/to/r_home/在netbeans.conf中添加该行.但是,仍然可以使用GUI解决方案.
我是R的新手,所以请原谅我这是一个非常基本的问题.
我写了一个R脚本,它做了一些计算,并在最后绘制了Box Plot.如果我从R控制台运行此脚本,它运行正常并绘制图形.
如果我从Java程序(JRI站点上给出的示例rtest.java程序)运行脚本,则计算结果很好.但绘制图表存在一些问题.框架窗口打开并保持忙碌并挂起.(如果我尝试单击窗口,则显示"无响应".)我正在使用JRI.
这就是我在脚本中绘制图形的方式:
boxplot(mat);
Run Code Online (Sandbox Code Playgroud)
以上命令在R控制台上正常工作.
我很确定这是关于某些导入/包或类似的设置.但无法弄清楚到底是什么.
谁能帮我这个?
谢谢.
编辑1: 我的盒子绘图命令的输出:

在John提供的链接上输出此代码:

我正在使用JRI从Java执行R,我看到JRI使用该eval()方法执行R命令.我有一个R脚本可供执行.
如何在JRI中加载此脚本并执行它?
我正在尝试在 RHEL6 (6.4) 上设置 R 和 Tomcat
我已经安装了R并且可以运行它。我已经安装了Tomcat 7并且可以托管文件file。我已将应用程序打包为 WAR 文件并使用 tomcat 进行部署。该应用程序在使用任何 R 组件之前在各个方面都运行良好。
这是它崩溃的地方,并出现以下错误,如 catalina.out 中所示:
Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.li
brary.path.
java.lang.UnsatisfiedLinkError: /usr/local/lib64/R-2.15.3/library/rJava/jri/libj
ri.so: libR.so: cannot open shared object file: Too many levels of symbolic link
s
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
Run Code Online (Sandbox Code Playgroud)
我确实在 R 下安装了 rJava: install.packages("rJava") 它安装得很好,并且我在 R 的库文件夹中安装了 rJava。
我在/etc/profile中定义了以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置Java/R接口(捆绑在R"rJava"包中),但我遇到了一些麻烦(尽管在这里和其他论坛上尝试了很多建议).
我正在运行Windows 7,jdk1.7.0_05,Eclipse,R 2.15.2.这些都是64位安装.
我试图让示例运行的步骤如下:
找不到JRI原生图书馆!请确保JRI本机库位于java.library.path中列出的目录中.
java.lang.UnsatisfiedLinkError: C:\Users\USERNAME\Documents\R\win-library\2.15\rJava\jri\x64\jri.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.rosuda.JRI.Rengine.<clinit>(Rengine.java:19)
at test.JRITest.main(JRITest.java:64)
Run Code Online (Sandbox Code Playgroud)
我已验证"java.library.path"是否按预期设置,因为:System.out.println("JLP ="+ System.getProperty("java.library.path")); 输出正确的路径.
我认为rJava可能没有完全安装(尝试重新安装),但我不知道如何检查这个."...\rJava\jri"或其任何子目录中唯一的JAR是"JRI.jar",而examples目录似乎不完整.
有没有人对这里可能出错的地方有什么建议?
似乎JRI网站(http://www.rforge.net/JRI/index.html)今天已经关闭,不确定是否有人知道下载的其他来源(除了直接来自CRAN).
谢谢.
我正在使用renjin,我正在尝试使用我在java代码中使用r代码生成的值,例如:
int x = 7;
try
{
engine.eval("tmp<-c(x, 4)");
engine.eval("print(tmp)");
}
catch (ScriptException ex)
{
;
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,因为引擎显然无法使用x.有没有简单的方法来解决这个问题?