Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 - Fatal编程技术网

在编译Java程序时遇到问题

在编译Java程序时遇到问题,java,Java,对不起,我不能更具体地回答这个问题。以下是我正在运行的:Windows7 64位、JDKV7、JREV7(64位)和JREV6(32位)。对于Java,我是一个新手,但是我知道如何编译程序和所有这些东西。当我尝试运行编译后的程序时,不断出现错误: C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>javac ch3p1.java C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java ch3p1

对不起,我不能更具体地回答这个问题。以下是我正在运行的:Windows7 64位、JDKV7、JREV7(64位)和JREV6(32位)。对于Java,我是一个新手,但是我知道如何编译程序和所有这些东西。当我尝试运行编译后的程序时,不断出现错误:

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>javac ch3p1.java

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java ch3p1
Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.c

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java -cp ch3p1
Error: could not open `C:\Program Files (x86)\Java\jre6\lib\i386\jvm.c

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java cd3p1
Exception in thread "main" java.lang.NoClassDefFoundError: cd3p1
Caused by: java.lang.ClassNotFoundException: cd3p1
        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)
Could not find the main class: cd3p1.  Program will exit.

C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1>java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
请注意,它找不到该文件,因为我更改了文件夹名称,以查看它是否会自动检测到我安装的64位JRE

然而,在充分搜索之后,我发现了一个页面,其中说明了我的问题是因为我正在运行一个我在JREv6的jdkv7上编译的程序。我把它弄得一团糟,试图让它在下载JDK时附带的JRE中运行

CD: C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1
Current directory: C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1
javac ch3p1.java
Process started >>>
<<< Process finished.
C:\Program Files\Java\jre7\bin\java.exe ch3p1
Process started >>>
Error: Could not find or load main class ch3p1
<<< Process finished.
最后,这里是我试图运行的实际程序:

public class ch3p1
{
    public static void main(String args[])
    {
        System.out.print("Hello.");
    }
}
那么,简单回顾一下。我发现的第一个错误是因为我正在编译和运行一个使用不同版本的JDK和JRE的程序。我不知道如何使用JDK安装附带的JRE来运行它,所以我使用了它的直接路径。当我去运行我编译过的程序时,我的希望破灭了。我得到一个简单的“错误:无法找到或加载主类ch3p1”

问题是什么?我不知道确切的情况,主要的问题是:我需要做什么才能让它工作?我不知道下一步该做什么,也不知道下一步该去哪里看,所以我无法用更多的描述。我希望我提供了足够有用的信息,并将其组织得足够好,使其易于理解

其他一些问题:删除我的添加/删除程序中的两个Java6更新是否有效?我如何更改它,使它在运行java时,都能运行64位JRE v7

我不知道我在这里做什么,我基本上是边走边学。我在某种程度上熟悉计算机,但我对Java和JDK还不熟悉,所以我对它的工作原理不太了解。我的线索可能完全被误导和错误,如果是这样,请纠正我

编辑

我知道这个网站上有很多问题,我相信在这里发帖的人会回答很多问题,这些问题可以用最少的努力或者不费吹灰之力就能解决。我必须说,我到处都找过了,我来这里是为了发表这篇文章,因为我根本找不到解决问题的办法。我没有在寻找另一个要使用的程序方面寻求帮助,我也肯定没有将这些文件放在我的Java安装目录中,因为尽管我是Java新手,但我对编程并不陌生。通过查看我提供的第一个示例,以及另一个示例,可以很容易地避免这种响应,在这个示例中,可以在我的文档中的文件夹中看到我的.java和.class文件的文件路径

我将在这里列出答案和我尝试过的内容:

  • 我从Oracle网站重新安装了JDK和JRE

  • 我已经设置了set_HOME系统变量,Path系统变量中有JDK bin目录

  • 我的.class文件和.java文件位于同一目录中,我的类和.java文件的名称相同,包括确切的案例

  • 在我安装了JDK和JRE之后,我删除了以前的文件并创建了一个新文件,但这也不起作用

  • 我试着把java和javac的直接位置放在回复中建议的位置上

  • 我意识到有更好的IDE和构建程序,我正在使用javac,因为我现在所在的类正在使用javac

现在,我想问一些额外的问题来帮助我:

  • 我的添加/删除程序列表中有Java v6.xx更新,删除这些更新会对任何事情产生积极或消极的影响。完全删除所有JDK/JRE文件并重新安装会改变什么吗

  • 在使用Java和Windows7时,是否存在我可能遇到的任何已知问题

  • 这是JRE或JDK的一个问题,因为它似乎在编译时没有任何问题,但当我去运行它时,我得到了错误

  • 除了CLASS_PATH或PATH之外,还有其他变量需要设置吗


尽管我还没有找到解决方案,但我还是非常感谢迄今为止所给予的一切帮助

尝试使用安装java的目录的绝对路径。这是我将在我的机器上键入的内容

cd "C:\Users\Sean\Documents\JAVASTUFF\Chapter 3\1"

"C:\Program Files\Java\jdk1.7.0_02\bin\javac" ch3p1.java

"C:\Program Files\Java\jdk1.7.0_02\bin\java" ch3p1
如果这样做有效,您应该将目录添加到路径中,以便这是首选的java版本。这样,您就不必再使用绝对路径,只需像往常一样键入“java”和“javac”

也可以在控制面板中的某个位置设置路径,这样您就不必在每次打开命令提示符时都键入该路径


编辑:您可能应该像“达菲莫”建议的那样将JAVA_设置为主页。如果它仍然不起作用,那么您的java安装可能有问题。试着从下载并安装一个新版本,让我们首先说,您永远不应该将任何代码放在安装Java JDK的目录中。请养成习惯,创建一个单独的文件夹(例如“c:\work”),并将项目子文件夹放在那里

打开命令shell并键入:
java-version
。这将告诉您编译和运行的Java版本。您关心JDK,因为您正在开发代码

是否设置了JAVA_HOME环境变量?请将其指向安装Java的目录。然后将
%JAVA\u HOME%\bin
添加到路径中。如果所有这些操作都正确,您应该能够通过键入
javac
在命令shell中编译

因此,创建一个文件夹
c:\work\learning\src
,并将您的
ch3p1.java
文件夹放入其中<代码>创建一个目录c:\work\learning\classes。使用以下命令编译代码:

javac -cp .;classes -d classes src\*.java
java -cp .;classes ch3p1
您应该在中看到ch3p1.class
javac -cp .;classes -d classes src\*.java
java -cp .;classes ch3p1