java.lang.NoClassDefFoundError: jdk.nashorn.internal.scripts.JO28P0

Я закончил библиотеку для Java, и я использовал ее для замены java.lang.invoke пакет (т. е. добавьте его в загрузчик классов загрузки перед обычной библиотекой JVM). В пакете он динамически генерирует байт-коды для дескрипторов метода. Спасибо, если у вас есть информация об этом классе!

В настоящее время этот пакет работает нормально с JRuby с тестовыми примерами, но он не работает, когда я пытаюсь проверить его с помощью Nashorn (версия Java для языка JavaScript). Сообщение об ошибке:

java.lang.NoClassDefFoundError: jdk.nashorn.internal.scripts.JO28P0
    at java.lang.invoke.DYNGuardWithTestHandle702.0000000051119BF0.<clinit>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:88)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:437)
    at code.jit.asm.plugins.MethodHandlePlugin.initObject(MethodHandlePlugin.java:208)
    at code.jit.asm.backplane.ClassContext.createTransformedObject(ClassContext.java:359)
    at code.jit.asm.services.BytecodeGenerator$6.action(BytecodeGenerator.java:211)
    at code.jit.asm.services.BytecodeGenerator.run(BytecodeGenerator.java:325)
    at code.jit.asm.services.BytecodeGenerator.generate(BytecodeGenerator.java:291)
    at code.jit.asm.services.BytecodeGenerator.startGenerating(BytecodeGenerator.java:257)
    at code.jit.asm.services.TaskRepositoryService.put(TaskRepositoryService.java:48)
    at code.jit.asm.services.BytecodeGenerator.generate(BytecodeGenerator.java:251)
    at code.jit.asm.services.BytecodeGenerator.generate(BytecodeGenerator.java:247)
    at java.lang.invoke.CallSite.jitMethodHandle(CallSite.java:125)
    at java.lang.invoke.MutableCallSite.setTarget(MutableCallSite.java:116)
    at jdk.internal.dynalink.ChainedCallSite.relinkInternal(ChainedCallSite.java:209)
    at jdk.internal.dynalink.ChainedCallSite.relink(ChainedCallSite.java:161)
    at jdk.nashorn.internal.runtime.linker.LinkerCallSite.relink(LinkerCallSite.java:154)
    at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:297)
    at java.lang.invoke.DirectHandle.invokeExact_thunkArchetype_L(DirectHandle.java:291)
    at java.lang.invoke.DYNFoldNonvoidHandle699.00000000525AABE0.inlinedMethod(Unknown Source)
    at java.lang.invoke.MutableCallSiteDynamicInvokerHandle.invokeExact_thunkArchetype_X(MutableCallSiteDynamicInvokerHandle.java:56)
    at jdk.nashorn.internal.scripts.Script$4$richards.:program(file:/C:/sxu/project/octane/richards.js:515)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:635)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:506)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:405)
    at jdk.nashorn.internal.runtime.Context.evaluateSource(Context.java:1236)
    at jdk.nashorn.internal.runtime.Context.load(Context.java:849)
    at jdk.nashorn.internal.objects.Global.load(Global.java:1544)

За исключением, я не могу найти ни одного класса JO28P0 из пакета nashorn. Я не могу получить какую-либо информацию для этого класса через Google.

Здесь JS из октанового эталона, в котором я комментирую все тесты, кроме первых двух случаев:

C:\\sxu\\project\\octane\\run.js
var base_dir = 'C:\\sxu\\project\\octane\\';
load(base_dir + 'base.js');
load(base_dir + 'richards.js');/*
load(base_dir + 'deltablue.js');
...
load(base_dir + 'typescript-compiler.js'); */

И основной код Java для запуска дела:

public static void runOctane(String[] args) {
    NashornScriptEngine nashorn = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");
        CompiledScript scr = nashorn.compile(new String(Files.readAllBytes(
                Paths.get("C:\\sxu\\project\\octane\\run.js"))));
        scr.eval();

}

Один аргумент VM -Djit_bytecode=true, Если этот аргумент верен, то перейду в мою библиотеку. В противном случае моя библиотека не будет иметь эффекта.

Исключение исчезает, если jit_bytecode ложно


ОБНОВИТЬ:

Мой код испускает динамические байт-коды, которые содержат символ JO28P0, Исключение было выдано, когда я пытаюсь использовать UNSAFE.defineAnonymousClass(), Итак, как я могу использовать использовать StructureLoader структуры, чтобы Unsafe.defineAnonymousClass может преуспеть?

0 ответов

Другие вопросы по тегам