Java 如何运行由用户创建而不是由复印机创建的类文件

Java 如何运行由用户创建而不是由复印机创建的类文件,java,Java,我用记事本打开了班级档案。复制了它的内容并粘贴到另一个记事本中,并将其保存在与“.class”扩展名相同的类名处。然后我试着运行那个新的类文件,得到的错误如下 Exception in thread "main" java.lang.UnsupportedClassVersionError: print : Unsupported major.minor version 8242.8224 at java.lang.ClassLoader.defineClass1(Native

我用记事本打开了班级档案。复制了它的内容并粘贴到另一个记事本中,并将其保存在与“.class”扩展名相同的类名处。然后我试着运行那个新的类文件,得到的错误如下

Exception in thread "main" java.lang.UnsupportedClassVersionError: print : Unsupported major.minor version 8242.8224
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

类文件是二进制文件,因此您可能复制了它的损坏视图。除非您愿意学习JVM的字节码,否则您不想手工处理Java类文件

如果你真的想这样做,我建议你买一个十六进制编辑器,让你复制和粘贴

编辑


还有一件事,除非您正在编写一个编译器或类似于Hibernate的东西,而它在运行时会被类文件弄脏,否则混用Java字节码没有任何价值。这意味着操纵字节码实际上没有正常的商业案例,如果没有正确的操作,并且有充分的理由,您几乎总是会在库或应用程序中引入一系列“WTF When you THINKING?!”级别的错误。一个特别的原因是Java和JVM字节码的关系很像C/C++和汇编。当然,你可以拆开一个C/C++应用程序,加入一些手工编码的程序集。但是,您很可能会在应用程序中引入不可窃听的错误(这些错误与您的手干扰字节码/程序集有关,而不是您用高级语言编写的代码库中的代码)。

类文件是二进制文件,因此您可能复制了它的损坏视图。除非您愿意学习JVM的字节码,否则您不想手工处理Java类文件

如果你真的想这样做,我建议你买一个十六进制编辑器,让你复制和粘贴

编辑


还有一件事,除非您正在编写一个编译器或类似于Hibernate的东西,而它在运行时会被类文件弄脏,否则混用Java字节码没有任何价值。这意味着操纵字节码实际上没有正常的商业案例,如果没有正确的操作,并且有充分的理由,您几乎总是会在库或应用程序中引入一系列“WTF When you THINKING?!”级别的错误。一个特别的原因是Java和JVM字节码的关系很像C/C++和汇编。当然,你可以拆开一个C/C++应用程序,加入一些手工编码的程序集。但是,您很可能会在应用程序中引入不可调试的错误(这些错误将与您手动将字节码/汇编代码插入应用程序有关,而不是与您用高级语言编写的代码库中的代码有关)。

这意味着您的javac版本与java版本不同。看


这意味着您的java版本与您的java版本不同。看


是的。其他答案(在这种情况下)是错误的;从来没有过Java版本8242.8224.Yep。其他答案(在这种情况下)是错误的;从来没有出现过Java版本8242.8224。通常,当您出现错误时(当您不尝试运行在记事本中复制的.class文件时),这是因为您尝试运行它的Java版本比用于编译的版本旧(因此不支持)。你的错误并非如此。我只是想尝试不同的东西,而不是别的。我从oracle网站下载了JDK6并安装了它。通常当你出现错误时(当你不尝试运行复制在记事本中的.class文件时),这是因为你尝试运行它的Java版本比(因此不支持)用于编译的版本。你的错误并非如此。我只是想尝试不同的东西,而不是别的。我从oracle网站下载了JDK6并安装了它。