为什么以下命令不起作用?
$ javac -encoding UTF8 -classpath ./piccolo-1.2.jar:./piccolox-1.2.jar com/google/scrollview/ui/SVAbstractMenuItem.java
它会产生多个错误,例如
com\google\scrollview\ui\SVAbstractMenuItem.java:22: package com.google.scrollview.events does not exist
import com.google.scrollview.events.SVEventType;
^
这是文件SVAbstractMenuItem.java第22行中的真实代码,但警告语句错误,因为包存在:
$ ls com/google/scrollview/events/
Makefile Makefile.am Makefile.in SVEvent.java SVEventHandler.java SVEventType.java
如何教这个编译器看包?
更新
代码不是我的,这是来自tesseract的makefile,我试图在cygwin下运行它。一切看起来都很正确。
包含当前目录会产生相同的结果:
$ javac -encoding UTF8 -classpath ./piccolo-1.2.jar:./piccolox-1.2.jar:. com/google/scrollview/ui/SVAbstractMenuItem.java
com\google\scrollview\ui\SVAbstractMenuItem.java:22: package com.google.scrollview.events does not exist
import com.google.scrollview.events.SVEventType;
^
com\google\scrollview\ui\SVAbstractMenuItem.java:56: cannot find symbol
symbol : class SVWindow
location: class com.google.scrollview.ui.SVAbstractMenuItem
public void performAction(SVWindow window, SVEventType eventType) {}
^
com\google\scrollview\ui\SVAbstractMenuItem.java:56: cannot find symbol
symbol : class SVEventType
location: class com.google.scrollview.ui.SVAbstractMenuItem
public void performAction(SVWindow window, SVEventType eventType) {}
^
3 errors
更新2
我发现如果JAR存在于classpath参数中,就会发生这种情况。
更新3
我意识到如果冒号分隔路径,则无法处理Windows / DOS驱动器号。因此,用冒号分离是错误的。
解决
这是Cygwin / Java的不兼容性。 Windows的Java使用分号来分隔路径,而linux和makefiles则采用linux风格,即冒号。所以它不在cygwin下工作。甚至在makefile中用冒号替换分号也没有解决问题。
仅将所有jar内容解压缩到单个普通目录中。
答案 0 :(得分:2)
在cygwin中使用javac可能很困难。 Java编译器不是cygwin而是windows程序。所以你必须使用Windows风格的路径。
因为在类路径中使用了冒号“:”,所以Windows Java编译器无法正确解释您的类路径。你必须使用分号“;”作为类路径中的路径分隔符。但是因为你是一个Unix风格的shell“;”终止你的命令。
编译没有cygwin的java源代码。由于结果是java类文件,因此无关紧要。或者将类似路径的参数和源文件的路径放在单引号中。
示例:
javac -encoding UTF8 -classpath '.\piccolo-1.2.jar;.\piccolox-1.2.jar;.' 'com\google\scrollview\ui\SVAbstractMenuItem.java'
答案 1 :(得分:1)
您忘记了类路径中的当前目录"."
,因此javac
甚至没有搜索正确的路径。
将其加入-classpath
:
$ javac -encoding UTF8 -classpath ./piccolo-1.2.jar:./piccolox-1.2.jar:. com/google/scrollview/ui/SVAbstractMenuItem.java
答案 2 :(得分:0)
export CLASSPATH=C:\\Users/username/bla/bla.jar;C:\\Users/username/bla/bla.jar