为什么在cygwin中找不到jar文件?

By simon at 2018-02-28 • 0人收藏 • 48人看过

我是cygwin的新手,所以我可能做错了什么。 这是我的shell脚本:

!/bin/sh
set [-x]
export myInstallDirectory='/cygdrive/c/cygwin64/usr/uTrace_ServerMachine'
echo "myInstallDirectory=" $myInstallDirectory
export JAVA_HOME=/cygdrive/c/Java_JDK_SE_8_u77_64_bit
echo "JAVA_HOME = " $JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
echo "PATH =" $PATH
export CLASSPATH=$myInstallDirectory/bin/UtraceServer.jar:$CLASSPATH
echo "CLASSPATH=" $CLASSPATH
java -jar UtraceServer.jar
set [+x]
以下是日志显示的内容:
myInstallDirectory= /cygdrive/c/cygwin64/usr/uTrace_ServerMachine
JAVA_HOME =  /cygdrive/c/Java_JDK_SE_8_u77_64_bit
PATH = /cygdrive/c/Java_JDK_SE_8_u77_64_bit  
/斌:在/ usr / local / bin目录:在/ usr / bin中:/ cygdrive / C /窗/ SYSTEM32:/ cygdrive / C / ProgramData /甲骨文/的Java / javapath:/ cygdrive / C /临公克 文件/ Intel / WiFi / bin:/ cygdrive / c / Program Files / Common 文件/英特尔/ WirelessCommon:/ cygdrive / C / WINDOWS:/ cygdrive / C / WinZip的/ WINZIP / WINZIP32.EXE:/ cygdrive / C / JavaJDKSE8u7764bit /斌:/cygdrive/c/JavaJDKSE8u7764bit/lib/tools.jar:/ cygdrive / C / JavaEESDK7u2 / glassfish4 / bin中:/ cygdrive / C / JavaEESDK7u2 / glassfish4 /的glassfish / bin中:/ cygdrive / C / JavaEESDK7u2 / glassfish4 / glassfish的/lib/javaee.jar:/cygdrive/c/IBM/Derby /db-derby-10.12.1.1-bin/lib/derbynet.jar:/cygdrive/c/IBM/Derby/db- 德比10.12.1.1斌/ lib目录/derbytools.jar:/cygdrive/c/IBM/Derby/db- 德比-10.12.1.1滨/ LIB / derbyoptionaltools.jar:/ cygdrive / C / IBM /德比/ DB- 德比10.12.10.1滨/测试/雅加达氯2.0.8.jar:/ cygdrive / C / IBM /德比/分贝 德比10.12.1.1滨/测试/ derbyTesting.jar:/ cygdrive / C / IBM /德比/分贝德比10.12.1.1斌/ lib中/ derbyrun.jar:/cygdrive/c/IBM/DB2EX~1/java/db2java.zip:/cygdrive/c/IBM/DB2EX~1/java/db2jcc.jar:/ cygdrivE / C / IBM / DB2EX〜1 /爪哇/ sqlj.zip:/cygdrive/c/IBM/DB2EX~1/java/db2jcclicensecu.jar:/ cygdrive / C / IBM / DB2EX〜1 /仓:/ cygdrive / C / IBM /DB2EX〜1 /爪哇/ common.jar:/ cygdrive / C / ORACLE / NetBeans的 8.1 / java / maven / bin:/ cygdrive / c / Program Files (86)/ SKYPE /电话:/ cygdrive / C /Cygwin / bin:/ cygdrive / c / Program Files / Microsoft 网络监视器 3:/ cygdrive / C / MySoftwareDevelopment / ClientMonitoring / ClientScripts CLASSPATH = / cygdrive / c / cygwin64 / usr / uTraceServerMachine /bin/UtraceServer.jar:.;C:\JavaJDKSE8u7764bit\lib\tools.jar; C:\ JavaEESDK7u2 \ glassfish4 \的glassfish \ lib中\ javaee.jar; C:\ IBM \德比 \ DB-德比-10.12.1.1槽\ lib中\ derbynet.jar; C:\ IBM \德比\ DB-德比10.12.1.1斌\ lib中\ derbytools.jar; C:\ IBM \德比\分贝 德比10.12.1.1斌\ lib中\ derbyoptionaltools.jar; C:\ IBM \德比\分贝 德比10.12.1.1斌\测试\雅加达氯2.0.8.jar; C:\ IBM \德比\分贝 德比10.12.1.1斌\测试\ derbyTesting.jar; C:\ IBM \德比\分贝 德比10.12.10.1斌\ lib中\ derbyrun.jar; C:\ IBM \ DB2EX〜1 \的java \ db2java.zip; C:\ IBM \ DB2EX〜1 \的java \的db2jcc.jar; C:\ IBM \ DB2EX〜1 \的java \ sqlj.zip; C:\ IBM \ DB2EX〜1周\的java \为db2jcclicensecu.jar; C:\ IBM \ DB2EX〜1 \仓; C:\ IBM \ DB2EX〜1 \的java \ common.jar 错误:无法访问jarfile UtraceServer.jar jar文件UtraceServer.jar位于 /cygdrive/c/cygwin64/usr/uTraceServerMachine/bin/UtraceServer.jar和你一样可以看到它在CLASSPATH中。感谢任何帮助。

2 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

Java不是Cygwin应用程序,所以它不能理解它的PATH,也不能理解它 cygdrive后缀。 JAVAHOME = /cygdrive/c / JavaJDKSE8u7764bit PATH = /cygdrive/c / JavaJDKSE8u7764_bit

2018-02-28   #2

如[如何从Java运行Java]中所述 Cygwin的(https://stackoverflow.com/questions/9690756/how-to-run-java-from- Cygwin的/ 16538153#16538153),你可以在你的脚本中使用Cygwin路径,但只是 在调用Java之前,您应该将它们转换为Windows路径例 与cygpath -p:

!/bin/sh -x
export myInstallDirectory='/cygdrive/c/cygwin64/usr/uTrace_ServerMachine'
echo "myInstallDirectory = $myInstallDirectory"
export CLASSPATH="$myInstallDirectory/bin/UtraceServer.jar:$CLASSPATH"
echo "CLASSPATH = $CLASSPATH"
CLASSPATH="$(cygpath -pw "$CLASSPATH")"
echo "CLASSPATH (Windows) = $CLASSPATH"
java -jar UtraceServer.jar
(我忽略了脚本中的其他路径,因为可以清楚地发现Java。) cygpath可以(除其他外)转换POSIX和and之间的单个路径 不同的Windows格式,例如-w转换一个path到Windows 路径。随着-p的加入,它将其参数视为路径列表 (用P分隔:OSIX,用于Windows的;)。看到 cygpath --help的完整信息。 重要提示:当你在脚本中使用它时,建议使用它总是使用 双引号(如上面的脚本)。这一贯地做到这一点 降低问题的风险由(例如)路径名中的空格隔开。

登录后方可回帖

Loading...