ecj1 in cross-compile

Daniel Andrzejewski mastadan@o2.pl
Wed Aug 13 20:51:00 GMT 2008




David Daney wrote:
> 
> Andrew Haley wrote:
>> Matthijs van de Water wrote:
>>
>>   
>>> I've got my GCC 4.3 toolchain working ok now, but for some reason I
>>> fail to get an ecj1 binary.
>>>
>>> I'm cross-compiling for ARM and I've tried --with-ecj-jar=XXX (which
>>> doesn't result in an ecj1) and also tried putting ecj.jar in my build
>>> dir (which complains about a missing java compiler).
>>> I must be doing something wrong, but I'm not sure what.
>>>
>>> I expect an i686 ecj1 binary to be compiled from the ecj-latest.jar
>>> that I download in my build. Preferably standalone, like the Ubuntu
>>> one.
>>> The build machine doesn't have an i686 GCJ or JAVAC installed, is that
>>> a problem?
>>>
>>> What am I missing?
>>>     
>>
>> I don't know how you think this is going to work.  ecj1 is a Java program
>> and thus it needs some sort of Java runtime library.  You are going to
>> need
>> an i686 gcj installed.  
> 
> That's right.  It is a new requirement for GCC-4.3 cross compilers.
> Either install a native build of gcj/libgcj in your PATH, or as Andrew
> suggested use the little shell script to invoke the jar file.
> 
> You have to be careful though, if you may not always want a native
> GCC-4.3 in your PATH, perhaps only when invoking the cross compiler.
> You could just copy or link the native ecj1 to the cross compiler bin
> directory.
> 
> David Daney
> 
> 
> 

Hi,

I have successfully compiled gcc-4.3.0. I need to cross-compile java code to
binary executables which wouldn't need shared libraries. So, I used options
like 
--disable-shared
--enable-languages=java
--with-ecj-jar=/home/daniel/ecj.jar

Now, when I try to compile a java program I get the following error:

~> gcj --main=HelloWorld -o HelloWorld HelloWorld.java

Exception in thread "main" java.lang.NoClassDefFoundError:
org.eclipse.jdt.internal.compiler.batch.GCCMain
   at gnu.java.lang.MainThread.run(MainThread.java:102)
Caused by: java.lang.ClassNotFoundException:
org.eclipse.jdt.internal.compiler.batch.GCCMain not found in
gnu.gcj.runtime.SystemClassLoader{urls=[file:./],
parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(URLClassLoader.java:529)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:442)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:377)
   at gnu.java.lang.MainThread.run(MainThread.java:98)


I cannot figure out what to fix. I tried to move the existing ecj1 file, and
that's what I got:

~> gcj --main=HelloWorld -o HelloWorld HelloWorld.java

gcj: error trying to exec 'ecj1': execvp: Permission denied


It's understandable, I just renamed the ecj1 to something else.

Now, when I use a short bash script that is provided above, I get different
error:

~> gcj --main=HelloWorld -o HelloWorld HelloWorld.java

Exception in thread "main" java.lang.NoClassDefFoundError:
org.eclipse.jdt.internal.compiler.batch.GCCMain
*** Got java.lang.NullPointerException while trying to print stack trace.


Is there anything I'm doing wrong? When I built gcc with --enable-shared and
without point to the ecj.jar, I was able to compile java programs, but they
of course needed the shared libraries, which I must avoid.

Please help.

Daniel Andrzejewski

-- 
Daniel Andrzejewski
student IT Administrator
Elec Engr & Comp Science
University of Tennessee
(865) 974 - 4388 (work)

"Investment in knowledge always pays the best interest"
Benjamin Franklin
-- 

-- 
View this message in context: http://www.nabble.com/ecj1-in-cross-compile-tp17771813p18970983.html
Sent from the gcc - java mailing list archive at Nabble.com.



More information about the Java mailing list