如何从Cygwin运行Java
我正试图编写一个BASH脚本来运行我的Java程序(常见问题,对吧?)。我就是不能让它正常工作。经过多次编辑后,我将尝试设置类路径,然后执行程序:如何从Cygwin运行Java,java,bash,cygwin,classpath,Java,Bash,Cygwin,Classpath,我正试图编写一个BASH脚本来运行我的Java程序(常见问题,对吧?)。我就是不能让它正常工作。经过多次编辑后,我将尝试设置类路径,然后执行程序: java -classpath 'cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive /c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar: /cygdri
java -classpath 'cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar:
/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects
/Freereader/bin/"' com.free.syndication.SQLfeeder
对不起,把事情弄得一团糟,我只是想把所有的事情一次做完。它告诉我程序的主类找不到!((
有什么想法吗?你不需要回执吗
java -classpath `cygpath -u "/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive
/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/common/lib/jsoup-1.6.1.jar:
/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects
/Freereader/bin/"` com.free.syndication.SQLfeeder
- Java类路径使用分号作为标记分隔符
- 使用反勾号而不是单引号
- 在bash中,语法
比backticks$(command)
`command`
有一个cygpath
选项,用于在Windows和Unix之间转换类似路径的值(而不是单个路径名),即。-p
将给出cygpath-pu'C:\Users\me\bin;C:\Users\me\project\bin'
/cygdrive/C/Users/me/bin:/cygdrive/C/Users/me/project/bin
将以相反的方向执行相同的操作cygpath-pw
cygpath-u”/cygdrive/c“
(如您的问题中所述)不会更改任何内容,因为目录名已采用所需的(Unix)语法。您也可以省略它
因此,命令变为:
CP="C:/Projects/common/lib/rome-1.0.jar;C:/Projects/common/lib/jdom-1.0.jar;C:/Projects/common/lib/jsoup-1.6.1.jar;
C:/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar;C:/Projects
/Freereader/bin"
# for a Windows Java binary:
java -classpath "$(cygpath -pw "$CP")" com.free.syndication.SQLfeeder
# for a Unix Java binary:
java -classpath "$(cygpath -pu "$CP")" com.free.syndication.SQLfeeder
或者,您可以从Unix样式的类路径开始,但命令保持不变。在这两种情况下,如果类路径已经使用了所需的语法,您当然可以省略对cygpath的调用。问题的主要原因不是backtic,而是冒号与分号的问题。因为在cygwin中,运行在那里的javas对于DOS/Windows环境,应使用“;”作为路径分隔符
虽然backtic确实有帮助,但问题的主要根源必须是强调在Unix或Windows环境中使用Java时“:”和“;”之间的区别。您是否尝试过
echo”cygpath-u“/cygdrive/c/Projects/common/lib/rome-1.0.jar:/cygdrive/c/Projects/common/lib/jdom-1.0.jar:/cygdrive/c/Projects/lib/jsoup-1.6.1.jar:/cygdrive/c/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar:/cygdrive/c/Projects/freereder/bin/"“
以确保它能够生成正确的路径?如果您将这些JAR直接添加到类路径中而不是将它们全部输入,不是会容易得多吗?或者,在您的情况下,您不能这样做吗?关于Java和Cygwin的常见问题:-给出了在Cygwin和Windows之间何时以及如何转换类路径的详细解释“谢谢这和一些轻微的调整,一切正常。
CP="C:/Projects/common/lib/rome-1.0.jar;C:/Projects/common/lib/jdom-1.0.jar;C:/Projects/common/lib/jsoup-1.6.1.jar;
C:/Projects/common/lib/mysql-connector-java-5.1.18-bin.jar;C:/Projects
/Freereader/bin"
# for a Windows Java binary:
java -classpath "$(cygpath -pw "$CP")" com.free.syndication.SQLfeeder
# for a Unix Java binary:
java -classpath "$(cygpath -pu "$CP")" com.free.syndication.SQLfeeder