首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cygwin上的Java路径问题

Cygwin上的Java路径问题
EN

Stack Overflow用户
提问于 2012-03-26 00:03:26
回答 3查看 3.7K关注 0票数 2

我正在尝试使用原生Win32 Java在Cygwin下编译一个Java项目。

在我的机器上的/cygdrive/c/jdk/bin下可以正确地找到Java二进制文件。

以下命令运行正常:

代码语言:javascript
复制
javac -d . ./gnu/kawa/util/PreProcess.java

./gnu/kawa/util/中生成PreProcess.class文件。然而,尝试对此调用Java失败:

代码语言:javascript
复制
CLASSPATH=.:$CLASSPATH java gnu.kawa.util.PreProcess \
   %java6 +use:com.sun.net.httpserver +enable:XML \
   `sed -e 's|\([^ ]*\)|./\1|' < ./patch-source-list`
Error: Could not find or load main class gnu.kawa.util.PreProcess
...

这个命令是由make调用的,这就是动态设置$CLASSPATH变量的地方。patch-source-list只是一个类名的列表。类路径中的:看起来很可疑,但是我不确定如何在测试;的同时不惹恼sh

我唯一的怀疑是原生Java正在尝试gnu\kawa\util\PreProcess,但我认为cygwin可以透明地处理这一点。

有什么想法吗?耽误您时间,实在对不起。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-06 13:16:41

另一种选择是使用':‘构建路径,然后使用cygpath修复结果。这在您的特定情况下可能有些夸张,但在一般情况下,您可能会引用多个目录,其中一些目录可能是作为绝对路径而不是相对路径引用的,或者如果您正在使用cygwin符号链接,它会更有用。

代码语言:javascript
复制
$ ln -s /cygdrive/c/development/libraries/ ../libs
$ cygpath -pw /cygdrive/c/development/:.:../libs
C:\development\;.;C:\development\libraries\

因此,您可以像前面一样构建CLASSPATH变量,并在最后阶段运行

代码语言:javascript
复制
CLASSPATH="`cygpath -pw "$CLASSPATH"`" java (whatever)
票数 4
EN

Stack Overflow用户

发布于 2012-06-08 16:51:38

请记住,JVM并不知道您正在使用cygwin bash shell。

两件事:

  1. 对于类路径位置,请使用windows路径名。因此,没有"/cygdrive/c/somepath",但"c:\somepath\“("/”和"\“可以互换使用)
  2. 在类路径列表

中使用';‘而不是':’

这应该是可行的:

代码语言:javascript
复制
export CLASSPATH="./gnu/kawa/util/PreProcess.class"
CLASSPATH=".;$CLASSPATH" java gnu.kawa.util.PreProcess
票数 3
EN

Stack Overflow用户

发布于 2012-03-26 01:12:09

类路径中的:看起来很可疑,但我不确定如何在测试;的同时不惹恼sh

您完全正确:您需要使用;而不是:。至于如何使用它-正如Mat在上面提到的,你需要"quote"分号。其中的任何一个都可以工作:

代码语言:javascript
复制
CLASSPATH=.\;$CLASSPATH java Foo

CLASSPATH=.';'$CLASSPATH java Foo

CLASSPATH='.;'$CLASSPATH java Foo

CLASSPATH=".;$CLASSPATH" java Foo

你可以用你最喜欢的那个。(第一个使用反斜杠,它引用了后面的单个字符。第二个和第三个使用单引号,即引号为零个或多个字符的序列。第四个使用双引号,除了它们仍然允许扩展变量$CLASSPATH之外,它类似于单引号。就此而言,您还可以编写如下内容

代码语言:javascript
复制
CLASSPATH=".;"$CLASSPATH java Foo

如果你愿意的话。有关在Bash中引用的更多信息,请参阅上面的链接。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9861623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档