我们有一个运行在JBoss 5下的Web应用程序,定期启动一个'java'进程(使用ProcessBuilder)在Linux上编译文件。该进程在Windows开发机器和我们安装的Ubuntu虚拟机上都可以正常工作。命令如下:
哪个导致了错误:
我怀疑这是一个权限问题,所以我们要求他们更改执行权限,但遗憾的是,仍然没有满足。
我唯一能想到的是这可能是一个路径转换错误或者我们没有在正确的位置应用正确的权限! 编辑:Andrea Spadaccini提出了一个很好的建议,但似乎我们已经通过路径具有遍历权限:
/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文件路径用双引号括起来。在喝了两杯啤酒和吃了一个巨无霸汉堡后,系统部门确认运行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
我怀疑这是一个权限问题,所以我们要求他们更改执行权限,但遗憾的是,仍然没有满足。
我唯一能想到的是这可能是一个路径转换错误或者我们没有在正确的位置应用正确的权限! 编辑: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一样。这里参数周围的双引号很可能是问题的原因。
strace -e trace=file -o YOUR_TRACEFILE YOUR_COMMAND
进行操作。您将在YOUR_TRACEFILE
中找到由该命令发出的系统调用列表。检查返回值并查看发出哪些错误。 - Andrea Spadaccini