我下载了SymmetricDS,一个数据库复制工具,并试图在我的Windows7机器上运行它。该程序可以从命令行启动,它与Windows终端。然而,我总是喜欢Git Bash
命令行的东西。当我运行命令sym
虽然,我得到错误:
Error: Could not find or load main class org.jumpmind.symmetric.SymmetricLauncher
这个工具是用Java写的,我安装了JDK 1.8,Git Bash继承了Windows的所有环境变量,包括$PATH
和$JAVA_HOME
,但是为什么它抱怨找不到类呢?sym
命令实际上运行的是以下命令:
exec "$SYM_JAVA" $SYM_OPTIONS -cp "$CLASSPATH" org.jumpmind.symmetric.SymmetricLauncher "$@"
所有的jar都位于应用程序根目录下的lib
中,类路径定义在conf
目录下的sym.service.conf
中:
# Java Classpath
wrapper.java.classpath.1=patches
wrapper.java.classpath.2=patches/*
wrapper.java.classpath.3=lib/*.jar
wrapper.java.classpath.4=web/WEB-INF/lib/*.jar
# Application main class and arguments
wrapper.app.parameter.1=org.jumpmind.symmetric.SymmetricLauncher
我在exec
之前添加了echo $CLASSPATH
来打印出类路径,看起来所有的类路径都是正确的:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/patches:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/patches/*:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/lib/*:
/c/Users/dnj0109/Apps/symmetric-server-3.8.29/web/WEB-INF/lib/*
2条答案
按热度按时间lymnna711#
可能与此主题有关:
在Windows上,路径分隔符是分号(“
;
”而不是“:
”)。不要问为什么,传统上,分号被Bash解释为命令分隔符,所以你必须对它进行转义:
如果您想知道它为什么与PATH一起工作:MSys对此有特殊的处理例程。
iyfjxgzm2#
Java应用可以在Windows CMD shell中运行,但不能在Windows git bash shell中运行的另一个原因是,用于运行应用的类路径包含以下内容之一:
../foo
)//servername/bah
参见:https://github.com/git-for-windows/git/issues/1028