无法使用 Git Bash 运行 Java 应用程序

ddd*_*ddd 8 java git bash classpath

我下载了SymmetricDS,一种用于数据库复制的工具,并尝试在我的 Windows7 机器上运行它。该程序可以从命令行启动,它适用于 Windows 终端。但是我总是更喜欢Git Bash命令行的东西。sym但是,当我运行命令时,出现错误:

Error: Could not find or load main class org.jumpmind.symmetric.SymmetricLauncher
Run Code Online (Sandbox Code Playgroud)

这个工具是用Java编写的。我安装了 JDK 1.8。Git的Bash的继承所有环境变量,包括$PATH$JAVA_HOME从Windows。但是为什么它会抱怨找不到类?

sym命令实际上是在运行以下命令:

exec "$SYM_JAVA" $SYM_OPTIONS -cp "$CLASSPATH" org.jumpmind.symmetric.SymmetricLauncher "$@"
Run Code Online (Sandbox Code Playgroud)

所有的 jars 都位于lib应用程序的根目录下。类路径定义在sym.service.conf内部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 
Run Code Online (Sandbox Code Playgroud)

echo $CLASSPATHexec打印出类路径之前添加了它,它似乎确实让所有这些都正确:

/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/*
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 12

这可能与此线程有关

在 Windows 上,路径分隔符是分号(“ ;”而不是“ :”)。
不要问为什么。传统上,分号被 Bash 解释为命令分隔符,因此您必须对其进行转义:

$ java -cp lib/clojure-1.1.0.jar\;lib/clojure-contrib-1.1.0.jar
Run Code Online (Sandbox Code Playgroud)

如果你想知道它为什么与 PATH 一起工作:MSys 有特殊的处理例程。