可以在sbt中工作,但不能在原始Java中工作:在使用“javac”编译.class文件之后,为什么';找到了吗?

可以在sbt中工作,但不能在原始Java中工作:在使用“javac”编译.class文件之后,为什么';找到了吗?,java,sbt,java-bytecode-asm,Java,Sbt,Java Bytecode Asm,我使用ObjectWeb的Asmiger获得了一个“HelloDump.java”,并添加了类加载器和一个main方法来加载和运行伪造的“HelloWorld” 如果我在构建工具sbt中运行'HelloDump.java',一切正常,并输出“HelloWorld!” 但如果我使用原始Java,它就会崩溃“HelloDump.java”似乎编译正常,但生成的“HelloDump.class”显然存在,但似乎无法识别(请检查以下顺序): 显式地将添加到类路径也没有帮助 那么,为什么这在sbt中起作用

我使用ObjectWeb的Asmiger获得了一个“HelloDump.java”,并添加了类加载器和一个main方法来加载和运行伪造的“HelloWorld”

如果我在构建工具sbt中运行'HelloDump.java',一切正常,并输出“HelloWorld!”

但如果我使用原始Java,它就会崩溃“HelloDump.java”似乎编译正常,但生成的“HelloDump.class”显然存在,但似乎无法识别(请检查以下顺序):

显式地将
添加到类路径也没有帮助

那么,为什么这在sbt中起作用,而在原始Java中却不起作用,我该如何修复它呢

谢谢,谢谢你的建议,
-Julian

添加到类路径中,这样您的命令就变成:
java-cp-lib/asm-all-4.1.jar:。HelloDump


JVM找不到该类的原因是,它只在类路径上查找,而不在其他地方。

添加到类路径,因此您的命令变为:
java-cp-lib/asm-all-4.1.jar:。HelloDump


JVM找不到该类的原因是,它看起来只在类路径上,而不在其他地方。

非常感谢这一课!我想我已经试过了。我认为我们之间存在转录错误,因此,对于家里的人来说,有效的代码是
java-cp lib/asm-all-4.1.jar:。HelloDump
。非常感谢您的课程!我想我已经试过了。我认为我们之间存在转录错误,因此,对于家里的人来说,有效的代码是
java-cp lib/asm-all-4.1.jar:。HelloDump
$ julianpeeters@julianpeeters-virtual-machine ~/asm-example $ javac -cp lib/asm-all-4.1.jar HelloDump.java

$ julianpeeters@julianpeeters-virtual-machine ~/asm-example $ ls
DumpLoader.java.bak  HelloDump.class.bak                 Hello.java.bak
Hello.class.bak      HelloDump$DynamicClassLoader.class  lib
HelloDump.class      HelloDump.java                      README.md

$ julianpeeters@julianpeeters-virtual-machine ~/asm-example $ java -cp lib/asm/all/4.1.jar HelloDump
Exception in thread "main" java.lang.NoClassDefFoundError: HelloDump
Caused by: java.lang.ClassNotFoundException: HelloDump
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: HelloDump. Program will exit.