[check] Java error: Invalid method Code length ... in class file org/python/pycode/... (script too large)

Bug #1216780 reported by RaiMan
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
SikuliX
In Progress
Medium
RaiMan

Bug Description

***** problem is caused by a Java implementation limit:

A compiled class file cannot be larger than 64 KB.

Since internally when running a script, this is compiled into a class file, and might be too large.

I will try to find some assistance help for a scripter, to know, when his stuff is too large.

So you have to divide your script into smaller packages and use import

-----------------------------------------------------------------------------

I wrote a 500 line sikuli script to play baccarat on an online casino.
The script was working fine so I decided to add some conditional statements to handle specific events in the game.
I added an additional 2500 lines of code and when I run it I get the following error - what does it mean ?

[error] script [ casino.com] stopped with error at line --unknown--
[error] Could not evaluate error source nor reason. Analyze StackTrace!
[error] java.lang.ClassFormatError: Invalid method Code length 93997 in class file org/python/pycode/_pyx376
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at org.python.core.BytecodeLoader$Loader.loadClassFromBytes(BytecodeLoader.java:119)
at org.python.core.BytecodeLoader.makeClass(BytecodeLoader.java:37)
at org.python.core.BytecodeLoader.makeCode(BytecodeLoader.java:67)
at org.python.compiler.LegacyCompiler$LazyLegacyBundle.loadCode(LegacyCompiler.java:43)
at org.python.core.CompilerFacade.compile(CompilerFacade.java:34)
at org.python.core.Py.compile_flags(Py.java:1717)
at org.python.core.Py.compile_flags(Py.java:1722)
at org.python.core.Py.compile_flags(Py.java:1732)
at org.python.core.__builtin__.execfile_flags(__builtin__.java:514)
at org.python.util.PythonInterpreter.ex

ecfile(PythonInterpreter.java:225)
at org.sikuli.script.SikuliScriptRunner.runPython(Unknown Source)
at org.sikuli.ide.SikuliIDE$ButtonRun.runPython(Unknown Source)
at org.sikuli.ide.SikuliIDE$ButtonRun$1.run(Unknown Source)

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

RaiMan (raimund-hocke)
description: updated
Changed in sikuli:
status: New → In Progress
importance: Undecided → Medium
assignee: nobody → RaiMan (raimund-hocke)
milestone: none → 1.1.0
RaiMan (raimund-hocke)
Changed in sikuli:
milestone: 1.1.0 → 1.2.0
RaiMan (raimund-hocke)
summary: - [1.0.1] Java error: Invalid method Code length ... in class file
+ [check] Java error: Invalid method Code length ... in class file
org/python/pycode/... (script too large)
Changed in sikuli:
milestone: 2.0.0 → 2.1.0
Revision history for this message
dannymorson (dannymorson) wrote :

The error you encountered is due to your script exceeding the Java Virtual Machine (JVM) method size limit of 64 KB. This happens when the compiled bytecode of a single method in your script is too large.

To resolve this issue, follow these steps:

Divide Your Script (https://s9game.app/): Break your large script into smaller, more manageable parts. Instead of having one massive block of code, split it into multiple smaller scripts or functions.

Use Modular Design: Organize your code into modules or separate functions that can be imported into your main script. This approach keeps individual sections of your code concise and within the size limits.

Refactor Code: Identify and refactor any large conditional blocks or repeated code into separate functions. Each function should perform a single task or handle a specific part of the logic.

By dividing your script into smaller pieces and using a modular approach, you will avoid the method size limit and improve the maintainability of your code.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related questions

Remote bug watches

Bug watches keep track of this bug in other bug trackers.