Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用记事本编写并通过命令提示符启动的Java程序在编写类时都会遇到相同的错误_Java_Class - Fatal编程技术网

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

用记事本编写并通过命令提示符启动的Java程序在编写类时都会遇到相同的错误,java,class,Java,Class,我在windows记事本中制作了一个hello world程序,但当我尝试运行它时,我不断收到一个类错误 我最初复制粘贴了excel文档中的代码,所以我尝试完全重写它,以防出现某种字体问题,但没有成功。我还认为我安装Java的方式可能存在某种问题,但我已经卸载了所有内容并多次重新安装,所以除非我一直出错,否则我不知道这是否是问题所在 代码如下: import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing

我在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的环境变量

它应该在蓝色背景上弹出一个窗口,说“你好,世界”。同一个程序在另一台计算机上为其他人工作。我们都在使用Windows10。我从未能在我的计算机上运行java程序。我以前尝试过一个不同的hello World程序,但我遇到了同样的错误

这就是我在命令提示符下启动它的原因:

C:\Program Files>javac FrameTester.java
错误是这样说的:

FrameTester.java:5: error: error while writing FrameTester: C:\Program Files\FrameTester.class
public class FrameTester{
       ^
1 error
我不知道是什么问题。救命啊

更新:我将程序放在documents文件夹中并尝试运行它,现在它会给我一条更详细的错误消息,但我仍然不知道如何修复它

C:\Users\orang\Documents>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 12

但是当我执行
javac-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 12

我很确定他们应该是一样的。我一定是把装置搞砸了。现在我真的不知道该怎么办


编辑:感谢您将问题标记为重复。另一个问题的答案真的很有帮助。由于某种原因,
echo%JAVA\u HOME%
没有返回任何内容,因此我无法使用它来解决我的问题。我不得不做些别的事情来解决它。我想我会把这件事搁在一边,以防有人和我一样,不知道他们在安装java时在做什么,并且不小心把它搞砸了。谢谢您的帮助。

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

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

我已经解决了!长话短说,我把安装搞砸了,然后几乎随机地卸载和重新安装jre和jdk,把安装搞得更糟,希望它能解决我的问题。如果在更新到Java12之前我没有做过一半的话,所有这些都可能会起作用。我有来自Java8的jre和来自Java12的jdk。我也有两个不同版本的Java8JRE。我想我不小心安装了一个32位版本的jre,因为我不理解安装页面


我只是删除了额外的jre(那是在
程序文件(x86)
中,而不是在
程序文件
中,其余的东西都在那里。)删除了jdk 12并从java 8安装了jdk,删除了一些额外的奇怪路径变量,添加了一个新的,在我重新启动计算机后,修复它的是类名
frametester
frametester
?Slaw所说的,加上你的剪切和粘贴似乎丢失了一些东西。默认情况下,在Win10上,Afaik
C:\Program Files
是一个受保护的目录,也就是说,你需要管理员访问才能在那里写入。你应该尝试另一个目录,例如你的“文档”目录。我刚刚意识到我在问题上复制粘贴了一个旧版本。当前的FrameTester上的
FrameTester
不起作用。请避免在开发工作区中使用/Program Files或/Program Files(x86)或/Windows目录。同样,如果您正在开发JavaEE应用程序,也不要将容器(如glassfish)放在这些目录中。您需要一个可读/可写的目录进行开发。不幸的是,由于某种原因,我无法访问%JAVA_HOME%(这不会导致任何其他问题,所以我甚至不想麻烦),因此我无法使用该部分,但查看PATH变量有助于我确定哪里出了问题,所以这对我帮助很大。非常感谢。