java.lang.ClassFormatError: java.lang.ClassFormatError: Inva

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
peter99
User
Beiträge: 84
Registriert: Samstag 3. August 2013, 21:32

Hi, sorry, momentan kommen einige Fragen auf. Vielen Dank schon im Vorraus und sorry wegen des vielen postens- bin grade am Verzweifeln.
Mein Programm liest mehrere files ein- nun will mein Betreuer jedoch diesen Schritt eliminieren- das ganze solla aber ohne webserver laufen.
Nachdem ich nun probiert habe das ganze direkt in Listen am Begin des Pythondcodes zu schreiben, bekomme ich folgenden error(erwaehnt werden sollte, dass ich in CSS programmiere und dieses Jython verwendet.

java.lang.ClassFormatError: java.lang.ClassFormatError: Invalid method Code length 68531 in class file org/python/pycode/_pyx14

Ist es irgendwie moeglich das zu umgehen? Btw wundert es mich, dass es nicht funktioniert. Mir ist nicht ganz klar, wieso es mehr Platz einnimmt, wenn ich es anschreibe, als wenn ich es einlese.
Lg,
Peter
BlackJack

@peter99: Soweit ich weiss gibt es bei CPython's Bytecode-Dateien eine ähnliche ”Einschränkung”. So viel Quelltext würde kein normaler Mensch in ein Modul schreiben. Oder halt auch nicht in eine Java-Klasse. Wenn das Daten sind, dann speichere die in einem entsprechenden Format was dann eingelesen wird. Es macht wenig Sinn so viele Daten in Python-Module zu stecken.
peter99
User
Beiträge: 84
Registriert: Samstag 3. August 2013, 21:32

Vielen Dank. nur aus INteresse: braucht ein im quellcode angeschriebenes array daher mehr PLatz?
BlackJack

@peter99: Ob eine literale, im Quelltext definierte Liste am Ende mehr Speicherplatz benötigt als eine Liste mit gleichem Inhalt der aus einer Datei gelesen wurde, hängt stark von der konkreten Implementierung und dann von der genauen Länge der Liste ab. Das Problem ist hier der generierte Bytecode um die Liste zu erstellen, der einfach grösser als 64 Kilobyte wird, was anscheinend die Grenze einer Bytecode-Datei ist. Beziehungsweise scheint das bei Java eine Begrenzung für eine Methode zu sein. Wahrscheinlich werden für Sprünge innerhalb einer Methode 16-Bit-Offsets verwendet. Wie gesagt, so riesige Quelltexte schreibt niemand.
Antworten