← Back to team overview

sikuli-driver team mailing list archive

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

 

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.

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to SikuliX.
https://bugs.launchpad.net/bugs/1216780

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

Status in SikuliX:
  In Progress

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

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1216780/+subscriptions



References