1

我的 Java 开发是在 windows 机器上完成的,我在 centos 机器上运行我的进程。我有一个 bash 脚本,可以构建我所有的罐子并将它们 SCP 到我的 centos 机器。我在 Cygwin 中运行这个 bash 脚本(java -version 是 1.5.0_12),但是当我尝试在我的 centos 机器上运行该进程时,jvm 无法打开罐子。此外,运行 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)

谢谢你

4

2 回答 2

3

解决了。我发现cygwin中的解决方案将文件权限设置为000

编辑 /etc/fstab 并在文件末尾添加这一行:

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

然后关闭所有 Cygwin 进程,打开一个新终端并再次对您的文件使用 ls -l。

于 2012-05-02T12:44:31.330 回答
2

Maven 作为一个 Java 应用程序,无论是通过 Cygwin 脚本还是 cmd.exe 启动,都运行相同。在这种情况下,Java 可执行文件是同一个工具。

首先,您可能希望在 bash 脚本中发布您正在使用的复制命令。其次,当 jar 文件被推送到 CentOS 机器时,您是否检查过它们的权限?当通过 bash 脚本发送文件时,进程所有者实际上是否可以读取这些文件,并且所有者/权限是否与使用 WinSCP 复制时相同?

于 2012-04-25T15:38:07.293 回答