我的Java开发在Windows机器上完成,我在centos机器上运行我的进程。 我有一个bash脚本,可以将我的所有Jars和SCP构建到我的centos机器上。我在Cygwin中运行这个bash脚本(java -version是1.5.0_12),但是当我尝试在我的centos机器上运行该进程时,jVM无法打开Jars。另外,运行jar -tf抛出:
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:114)
at java.util.zip.ZipFile.<init>(ZipFile.java:75)
at sun.tools.jar.Main.list(Main.java:979)
at sun.tools.jar.Main.run(Main.java:224)
at sun.tools.jar.Main.main(Main.java:1149)
所以我可以部署的唯一方法是在cmd.exe中运行mvn命令以构建我的jar然后使用WinSCP复制所有内容(这样我在jar中没有问题)。
在cygwin中运行mvn有任何已知问题吗? (运行mvn -version返回 Apache Maven 2.2.1(r801777; 2009-08-06 22:16:01 + 0300) Java版本:1.6.0_26)
谢谢
答案 0 :(得分:3)
解决了它。 我在cygwin sets file permission to 000
中找到了解决方案编辑/ etc / fstab并在文件末尾添加此行:
none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
然后关闭所有Cygwin进程,打开一个新终端并再次对你的文件进行ls -l。
答案 1 :(得分:2)
无论是通过Cygwin脚本还是cmd.exe启动,Maven都是Java应用程序。在这种情况下,Java可执行文件是相同的工具。
首先,您可能希望在bash脚本中发布正在使用的复制命令。其次,一旦将它们推送到CentOS盒子,你是否检查过jar文件的权限?当通过bash脚本发送文件时,文件是否实际可读,并且所有者/权限与使用WinSCP复制时相同?