我试图用gcj构建一个java应用程序,但是得到了下面的错误。我已经有一段时间没有使用gcj了(一年左右),所以我可能忘记了一些不明显的东西,但我很确定我一直都是这样做的。
multiple definition of `java resource .dummy'gcj版本在Ubuntu上是4.4.1,在cygwin/windows XP上是4.3.4,我正在用
gcj --main=my.MainClass --classpath=my my/*java任何人在没有安装早期版本的gcj的情况下都会看到或知道解决方法。如果是这样做的话,有没有人知道如何在cygwin上做到这一点,或者我必须构建它?
以下是产生此错误的最小测试用例
public class A {
public static void main(String[] args) {
System.out.println(new B());
}
}
public class B {
public String toString() {
return "Hello";
}
}
gcj --main=A src/A.java src/B.java发布于 2010-04-02 23:32:47
针对此42143和43302提交了2个错误
唯一报道的解决方案是编译成类文件,然后链接类文件。
以下代码不会产生任何错误:
gcj -I src -C src/A.java src/B.java
gcj -I src --main=A src/A.class src/B/class发布于 2010-04-26 12:12:57
如果您是通过使用gcj -c将.java文件编译为.o文件来构建的,则还可以通过使用objcopy将虚拟符号设为本地符号来修复此问题:
objcopy -L '_ZGr8_$_dummy' A.o这对于Makefile很有效--只需添加到%.o: %.java规则:
objcopy -L '_ZGr8_$$_dummy' $@ 发布于 2011-12-13 05:03:02
至少在某些版本的gcj中,使用-o显式指定输出可执行文件将使其正常工作:
java gcj --main=my.MainClass -o myexe --classpath=my my/*
不过,我对这种行为没有任何解释。
https://stackoverflow.com/questions/2567230
复制相似问题