我是gcj和java的新手,所以如果我缺少明显的东西,请原谅我。我正在尝试使用gcj编译YUICompressor,但遇到一个错误,即找不到主类。我有:

~/java/yuicompressor.2.4.8> gcj --main=YUICompressor -g -o yuicompress build/yuicompressor-2.4.8.jar
/tmp/ccbNVkUt.o: In function `main':
/tmp/ccbuUbZw.i:11: undefined reference to `YUICompressor::class$'
collect2: ld returned 1 exit status


我知道YUICompressor类在jar文件中,所以我不明白为什么gcj没有看到它:

~/java/yuicompressor.2.4.8> jar -tf build/yuicompressor-2.4.8.jar | grep YUICompressor.class
com/yahoo/platform/yui/compressor/YUICompressor.class
~/java/yuicompressor.2.4.8> find . -name YUICompressor.java -exec grep -H "\bmain\b" {} \;
./src/com/yahoo/platform/yui/compressor/YUICompressor.java:    public static void main(String args[]) {
./build/build_tmp/com/yahoo/platform/yui/compressor/YUICompressor.java:    public static void main(String args[]) {


如果从Java调用,则YUICompressor.jar文件似乎可以正常工作,但是我想将此文件分发为二进制文件,而不依赖于目标计算机上安装的Java。任何建议表示赞赏。

最佳答案

您需要告诉gcj整个类名,包括包(在本例中为com.yahoo.platform.yui.compressor.YUICompressor)。

08-17 04:36