用记事本编写并通过命令提示符启动的 Java 程序在编写类时都会收到相同的错误



我在Windows记事本中制作了一个hello world程序,但是当我尝试运行它时,我总是收到类错误。

我最初从 excel 文档中复制粘贴了代码,所以我尝试完全重写它,以防它是某种字体问题,但没有运气。我也认为这可能是我安装 Java 的方式存在某种问题,但我卸载了所有内容并多次重新安装它,所以除非我继续做错,否则我不知道这是否是问题所在。

代码如下:

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextField;
import java.awt.Color;
public class FrameTester{
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setSize(200,200);
JTextField text = new JTextField("Hello, World!");
text.setBackground(Color.BLUE);
frame.add(text);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}       

程序文件中的 Java 文件夹有两个文件夹:一个称为 JDK-12,另一个称为 jre1.8.0_202。 它们安装日期不同。 首先安装了 JDK 文件夹。我有一个名为 C:\Program Files\Java\jdk-12\bin 的环境变量

它应该在蓝色背景上弹出一个窗口,上面写着"你好世界"。同一程序适用于不同计算机上的其他人。我们都在使用Windows 10。我从来没有能够让我的电脑运行Java程序。我之前尝试过不同的hello World程序,但遇到了同样的错误。

这是我在命令提示符下放置的内容以启动它:

C:Program Files>javac FrameTester.java

这就是错误所说的:

FrameTester.java:5: error: error while writing FrameTester: C:Program FilesFrameTester.class
public class FrameTester{
^
1 error

我不知道问题是什么。 救命!

更新:我将程序放在文档文件夹中并尝试运行它,现在它给了我更详细的错误消息,但我仍然无法弄清楚如何解决它。

C:UsersorangDocuments>java FrameTester
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: FrameTester has been compiled by a more recent version of the Java Runtime (class file version 56.0), this version of the Java Runtime only recognizes class file versions up to 52.0
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$100(Unknown Source)
at java.net.URLClassLoader$1.run(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 sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

当我做java -version时,我得到这个:

java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

但是当我做javac -version时,我得到这个:

javac 12

我很确定它们应该是相同的。我一定在安装中的某个地方搞砸了。此时我真的不知道该怎么办。

编辑:感谢您将问题标记为重复。 另一个答案真的很有帮助。出于某种原因,echo %JAVA_HOME%没有返回任何内容,所以我无法使用它来解决我的问题。我不得不做点别的事情来解决它。我想我会把它留下来,以防万一有人像我一样,不知道他们在做什么,当他们安装 java 时不小心把它搞砸了,真的,非常糟糕。感谢您的帮助。

您的FrameTester.java程序是正确的,没有任何问题。

看起来 PATH 和JAVA_HOME变量在您的环境中搞砸了。 我建议使用 echo %PATH% 和 %JAVA_HOME% 命令在命令提示符下打印它们,并确认使用的 JDK 版本是正确的。即 PATH 和 JAVA_HOME 都指向同一个 JDK 或 JRE 文件夹。如果没有解决问题。希望它能解决您的问题。

我修好了!长话短说,我搞砸了安装,然后通过几乎随机卸载和重新安装 jre 和 jdk 来进一步搞砸它,希望它可以解决我的问题。如果我在更新到 java 12 之前没有完成其中的一半,所有这些都可能奏效。我有来自Java 8的jre和来自Java 12的jdk。不知何故,我也有两个不同版本的java 8 jre。我想我不小心安装了 32 位版本的 jre,因为我不了解安装页面。

我只是删除了额外的jre(在Program Files (x86)而不是在其余所有内容所在的Program Files中)并删除了jdk 12并从java 8安装了JDK,删除了一些额外的奇怪路径变量,添加了一个新的,并在我重新启动计算机后修复了它

相关内容

最新更新