簡體   English   中英

如何從java執行R腳本文件

[英]How to execute a R script file from java

我想從 Java 調用 R 腳本。 我已經對這個主題進行了谷歌搜索,但幾乎所有我看到的結果都需要我向某些第三方庫添加依賴項。 任何人都可以向我展示一種在不向我的代碼中添加任何依賴項的情況下完成相同事情的好方法嗎?

我正在設置一個新的應用程序,它使用以下行從 java 運行 R 腳本文件

Runtime.getRuntime().exec("C:\\Users\\Thiru\\Desktop helloWorld.R");

但是當我運行應用程序時,我收到以下異常:

SEVERE: Servlet.service() for servlet [RenjinServlet] in context with 
path 
[/REngineCheck] threw exception
java.io.IOException: Cannot run program "C:\Users\Thiru\Desktop": 
CreateProcess error=5, Access is denied
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at org.r.Check.RenjinServlet.doGet(RenjinServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at 

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:291)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter 
(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke 
(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke 
(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke 
(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke 
(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke 
(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke 
(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service 
(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process 
(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process 
(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun 
(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run 
 (NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run 
  (TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: CreateProcess error=5, Access is denied
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 28 more

你應該在括號中設置你的路徑

("your_path\\Rscript.exe your_path\\filename.R")

如果設置了環境,就可以使用Rscript

例子:

Runtime.getRuntime().exec("C:\\Program Files\\R\\R-3.6.1\\bin\\x64\\Rscript.exe C:\\Users\\Thiru\\Desktop\\helloWorld.R");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM