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

weylhg0b  于 2023-01-04  发布在  Git
关注(0)|答案(2)|浏览(198)

我下载了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/*
lymnna71

lymnna711#

可能与此主题有关:
在Windows上,路径分隔符是分号(“;”而不是“:”)。
不要问为什么,传统上,分号被Bash解释为命令分隔符,所以你必须对它进行转义:

$ java -cp lib/clojure-1.1.0.jar\;lib/clojure-contrib-1.1.0.jar

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

iyfjxgzm

iyfjxgzm2#

Java应用可以在Windows CMD shell中运行,但不能在Windows git bash shell中运行的另一个原因是,用于运行应用的类路径包含以下内容之一:

  • 相对路径(例如../foo
  • 网络驱动器(例如//servername/bah

参见:https://github.com/git-for-windows/git/issues/1028

相关问题