Closed muellerz closed 10 years ago
Kann ich nicht nachvollziehen
Eingabe Datei mit der es nicht klappt am besten hier einfuegen oder schicken ansonsten kann ich dir nicht helfen ^^
Leon meinte, dass es vielleicht an einer zu neuen JVM-Version liegen kann. java -version gibt folgende Ausgabe: java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK Client VM (build 24.51-b03, mixed mode, sharing)
Ich kann die generierten Class-Dateien nämlich auch nicht aus dem Terminal starten.
Lies mein Kommentar
und an der JVM Version liegt es nicht hab sogar eine neuere Version, also wie gesagt das Rail Programm mal hochladen oder per Mail schicken das ich es testen kann.
Lieber im github, auch für zukünftige Sachen, so dass sich auch andere am Fixen erfreuen können :D
$ 'main' \ -[Hello World]-o-#
Baut mir super und laesst sich auch ausfuehren?
$ java Main Hello World
Was sagt den der Compiler beim Ausfuehren?
Evtl. ein Tipp nimm mal dein Whitespace aus dem filenamen^^ (macht man unter linux net) vllt compiliert er es ja erst garnich das wuerde deine 0 Bytes in dem Classfile erklaeren.
Das Whitespace hatte dann bei mir auch rausgenommen, aber es hatte nichts geändert. Der Compiler gab dann einen Speicherzugriffsfehler vom Backend aus. Mit dem letzten Pull sieht es so aus: * Error in `./Compiler': free(): invalid pointer: 0x08bb9c00 * Abgebrochen (Speicherabzug geschrieben)
Ganz ehrlich ich hab kein Ahnung was bei dir Falsch laeuft also bei mir compiliert es und ist auch Ausfuehrbar.
Deshalb gehen wir alles mal Schritt fuer Schritt durch:
Ich glaub, meine VM will mich trollen. Jetzt läuft Hello World wieder... Aber der Vollständigkeit halber:
1) Ubuntu 14.04 LTS 32 Bit 2) gcc-Version 4.9.0 20140405 (experimental) [trunk revision 209157](Ubuntu 4.9-20140406-1ubuntu1) 3) 17:03:11 \ Build of configuration Debug for project Compiler ** make all Building file: ../src/frontend/parser/Parser.cpp Invoking: GCC C++ Compiler g++ -DGXX_EXPERIMENTAL_CXX0X -D__cplusplus=201103L -I"/home/muellerz/SWP/Repository/SWPSoSe14/projekt-compiler/src" -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -pedantic -MMD -MP -MF"src/frontend/parser/Parser.d" -MT"src/frontend/parser/Parser.d" -o "src/frontend/parser/Parser.o" "../src/frontend/parser/Parser.cpp" Finished building: ../src/frontend/parser/Parser.cpp
[...]
Building target: Compiler
Invoking: GCC C++ Linker
g++ -std=c++11 -o "Compiler" ./src/frontend/parser/Parser.o ./src/frontend/lexer/Lexer.o ./src/frontend/Graphs.o ./src/frontend/adjacency_list.o ./src/frontend/frontend.o ./src/common/Env.o ./src/backend/unittest/classfile_writer_test.o ./src/backend/unittest/constant_pool_test.o ./src/backend/codegen/Bytecode.o ./src/backend/codegen/local_variable_stash.o ./src/backend/classfile/Bytecode_writer.o ./src/backend/classfile/Lambda_classfile_writer.o ./src/backend/classfile/Lambda_interface_writer.o ./src/backend/classfile/classfile_writer.o ./src/backend/classfile/constant_pool.o ./src/backend/backend.o ./src/backend/main.o ./src/main.o
Finished building target: Compiler
17:03:49 Build Finished (took 38s.779ms)
4) ./Compiler -i HelloWorld.rail -o HelloWorld.class
5) Jupp. Ist unverändert.
6) java -XX:-UseSplitVerifier -cp . HelloWorld
alles klar dann schliess ich das mal ^^
Der Editor ruft den Compiler erfolgreich auf, aber die erstellte Classdatei wirft beim Ausführen eine Exception.
Der Aufruf lautet: "java -XX:-UseSplitVerifier -cp "
Bei einem simplen HelloWorld wird folgende Exception geworfen: Exception in thread "main" java.lang.ClassFormatError: Truncated class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)