Git Product home page Git Product logo

jjvm's Issues

运行过程中 java.lang.NoClassDefFoundError:

load class is exist
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/org/apache/bcel/internal/Constants
at org.caoym.jjvm.opcode.BytecodeInterpreter.parseCodes(BytecodeInterpreter.java:58)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.(JvmOpcodeMethod.java:24)
at org.caoym.jjvm.opcode.JvmOpcodeClass.(JvmOpcodeClass.java:49)
at org.caoym.jjvm.opcode.JvmOpcodeClass.read(JvmOpcodeClass.java:30)
at org.caoym.jjvm.JvmDefaultClassLoader.loadClass(JvmDefaultClassLoader.java:37)
at org.caoym.jjvm.VirtualMachine.getClass(VirtualMachine.java:50)
at org.caoym.jjvm.VirtualMachine.run(VirtualMachine.java:38)
at org.caoym.jjvm.JJvm.main(JJvm.java:25)
Caused by: java.lang.ClassNotFoundException: com.sun.o

java.lang.NoSuchMethodException: <init>:(Ljava/lang/String;)V not exist

org/caoym/jjvm/Main.@0:NEW

java.lang.NoSuchMethodException: :(Ljava/lang/String;)V not exist
at org.caoym.jjvm.natives.JvmNativeClass.getMethod(JvmNativeClass.java:52)
at org.caoym.jjvm.opcode.OpcodeRout$7.invoke(OpcodeRout.java:95)
at org.caoym.jjvm.opcode.BytecodeInterpreter$1.invoke(BytecodeInterpreter.java:63)
at org.caoym.jjvm.opcode.BytecodeInterpreter.run(BytecodeInterpreter.java:49)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.call(JvmOpcodeMethod.java:63)
at org.caoym.jjvm.opcode.JvmOpcodeClass.clinit(JvmOpcodeClass.java:87)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.call(JvmOpcodeMethod.java:62)
at org.caoym.jjvm.VirtualMachine.run(VirtualMachine.java:44)
at org.caoym.jjvm.JJvm.main(JJvm.java:28)

org/caoym/jjvm/Main.@1:DUP
org/caoym/jjvm/Main.@2:LDC
org/caoym/jjvm/Main.@3:INVOKESPECIAL

跳转指令中,PC和offset的疑问

在尝试实现&调试“条件跳转指令”过程中,遇到PC、offset计算问题。
按JVM文档、资料、class二进制内容,得到的结果都是新地址为

	offset+PC
		其中 offste = (operand1<<8)|operand2

但本项目中,PC地址似乎保存的是第N条指令,于是直接加offset,会超出operands数组长度范围

参考项目,如 https://github.com/zachaxy/JVM/ 的 blob/master/Java/src/instructions/base/BytecodeReader.java

程序自己维护PC,并且每读出一个 UINT8 内容,会递增 PC
这个才比较符合JVM规范的说明

执行sample2报错

`执行sample2报错如下,sample1可正常执行

org/caoym/samples/sample2/Main.@1:DUP
org/caoym/samples/sample2/Main.@2:LDC
org/caoym/samples/sample2/Main.@3:INVOKESPECIAL
org/caoym/samples/sample2/Speaker.@0:ALOAD_0
org/caoym/samples/sample2/Speaker.@1:INVOKESPECIAL
org/caoym/samples/sample2/Speaker.@2:ALOAD_0
org/caoym/samples/sample2/Speaker.@3:LDC
org/caoym/samples/sample2/Speaker.@4:PUTFIELD
org/caoym/samples/sample2/Speaker.@5:ALOAD_0
org/caoym/samples/sample2/Speaker.@6:ALOAD_1
org/caoym/samples/sample2/Speaker.@7:PUTFIELD
org/caoym/samples/sample2/Speaker.@8:RETURN
org/caoym/samples/sample2/Main.@4:PUTSTATIC
org/caoym/samples/sample2/Main.@5:RETURN
org/caoym/samples/sample2/Main.main@0:GETSTATIC
org/caoym/samples/sample2/Main.main@1:ALOAD_0
org/caoym/samples/sample2/Main.main@2:ICONST_0
org/caoym/samples/sample2/Main.main@3:AALOAD
java.lang.ArrayIndexOutOfBoundsException: 0
at org.caoym.jjvm.opcode.OpcodeRout$31.invoke(OpcodeRout.java:325)
at org.caoym.jjvm.opcode.BytecodeInterpreter$1.invoke(BytecodeInterpreter.java:64)
at org.caoym.jjvm.opcode.BytecodeInterpreter.run(BytecodeInterpreter.java:50)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.call(JvmOpcodeMethod.java:64)
at org.caoym.jjvm.opcode.JvmOpcodeClass.clinit(JvmOpcodeClass.java:88)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.call(JvmOpcodeMethod.java:63)
at org.caoym.jjvm.VirtualMachine.run(VirtualMachine.java:44)
at org.caoym.jjvm.JJvm.main(JJvm.java:18)
`

Run Error:Exception in thread "main" java.lang.InternalError: The opcode arraylength Not Impl

/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:61115,suspend=y,server=n -javaagent:/Users/gaolianchi/Library/Caches/IntelliJIdea2018.2/captureAgent/debugger-agent.jar=file:/private/var/folders/ly/f_9whgj13kb6j8mq3wtwh984gss97k/T/capture.props -Dfile.encoding=UTF-8 -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/lib/tools.jar:/Users/gaolianchi/workspace/jjvm/target/classes:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar" org.caoym.jjvm.JJvm /Users/gaolianchi/workspace/jjvm/target/classes org.caoym.jjvm.JJvm com.msdnfaq.jvm.test.Test
Connected to the target VM, address: '127.0.0.1:61115', transport: 'socket'
Exception in thread "main" java.lang.InternalError: The opcode arraylength Not Impl
at org.caoym.jjvm.opcode.OpcodeRout.valueOf(OpcodeRout.java:460)
at org.caoym.jjvm.opcode.BytecodeInterpreter.parseCodes(BytecodeInterpreter.java:57)
at org.caoym.jjvm.opcode.JvmOpcodeMethod.(JvmOpcodeMethod.java:24)
at org.caoym.jjvm.opcode.JvmOpcodeClass.(JvmOpcodeClass.java:49)
at org.caoym.jjvm.opcode.JvmOpcodeClass.read(JvmOpcodeClass.java:30)
at org.caoym.jjvm.JvmDefaultClassLoader.loadClass(JvmDefaultClassLoader.java:33)
at org.caoym.jjvm.VirtualMachine.getClass(VirtualMachine.java:50)
at org.caoym.jjvm.VirtualMachine.run(VirtualMachine.java:38)
at org.caoym.jjvm.JJvm.main(JJvm.java:18)
Disconnected from the target VM, address: '127.0.0.1:61115', transport: 'socket'

Process finished with exit code 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.