加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – “linux中无法访问jarfile”

发布时间:2020-12-15 02:50:39 所属栏目:Java 来源:网络整理
导读:我们有一个在JBoss 5下运行的Web应用程序,它定期启动一个’ java‘进程(使用ProcessBuilder)来编译 Linux上的文件.该过程在Windows开发机器和我们已安装的Ubuntu虚拟机上运行正常.命令如下: /usr/java/jdk1.6.0_18/bin/java -Xmx256M -DiDesigner.javabin=j
我们有一个在JBoss 5下运行的Web应用程序,它定期启动一个’ java‘进程(使用ProcessBuilder)来编译 Linux上的文件.该过程在Windows开发机器和我们已安装的Ubuntu虚拟机上运行正常.命令如下:
/usr/java/jdk1.6.0_18/bin/java -Xmx256M -DiDesigner.javabin=java -jar "/aplicaciones/jboss/nfs/pmc_tdt/bin/lib/iDesigner.jar" --compiler --obfuscate --in "81.ida" --out "directory:OUTPUT"

这会产生错误:

Unable to access jarfile "/aplicaciones/jboss/nfs/pmc_tdt/bin/lib/iDesigner.jar"

所有路径都被确认为正确且jar file path is enclosed by double quotes.在两台啤酒和一台巨无霸之后系统部门确认运行JBoss的用户(jbossadmin)也是该文件的所有者:

[root@miv-multicanalidad-01 lib]# pwd
/aplicaciones/jboss/nfs/pmc_tdt/bin/lib
[root@miv-multicanalidad-01 lib]# ls -l iDesigner.jar
-rw-r--r-- 1 jbossadmin jbossadmin 1329162 ene 22  2010 iDesigner.jar

我怀疑它是rights issue所以我们问他们change the permissions to execute但是唉,仍然没有满足感.

我唯一能想到的是它是path translation error还是我们没有将正确的权利应用到正确的地方!

编辑:Andrea Spadaccini提出的一个很好的建议,但似乎我们已经通过路径获得了遍历权限:

drwxr-xr-x 3 root root 4096 abr  6  2010 /aplicaciones/
drwxr-xr-x+ 16 jbossadmin jbossadmin 4096 mar  7 10:13 /aplicaciones/jboss/
drwxrwxr-x+ 5 jbossadmin jbossadmin 4096 ene 25 09:21 /aplicaciones/jboss/nfs/
drwxr-xr-x 4 jbossadmin jbossadmin 4096 abr  6 16:03 /aplicaciones/jboss/nfs/pmc_tdt
drwxr-xr-x 4 jbossadmin jbossadmin 4096 sep  3  2010 /aplicaciones/jboss/nfs/pmc_tdt/bin/
drwxr-xr-x 3 jbossadmin jbossadmin 4096 abr  6 16:03 /aplicaciones/jboss/nfs/pmc_tdt/bin/lib/

编辑:使用Eva我们可以确认通过命令行(bash)执行该行它可以工作,但是如果我们在Linux中执行嵌入jar文件的ProcessBuilder类中的行,则会抛出错误.正如我们的JBoss那样.围绕参数的双引号是此问题的最可能原因.

解决方法

@ian_scho嗨!,我认为这里的问题是命令行引号是允许的,因为linux中的进程bash解释了(这是命令行解释)…当在java代码中使用ProcessBuilder类时,引号被解释为路径的一部分…因为显示错误“无法访问jar文件”.您可以使用命令ps -adf查看进程父级,尝试在后台运行您的命令行(&),如下所示:
/usr/java/jdk1.6.0_18/bin/java -Xmx256M -DiDesigner.javabin=java -jar "/aplicaciones/jboss/nfs/pmc_tdt/bin/lib/iDesigner.jar" --compiler --obfuscate --in "81.ida" --out "directory:OUTPUT" &

然后调用该命令

ps -adf

您将看到bash进程是父进程…如果在jboss运行时执行相同操作,您可以看到进程’java执行的父进程是另一个无法解释引号的进程.

我希望这会对你有所帮助:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读