混淆用包编译基本的java测试程序

时间:2011-10-05 12:59:26

标签: java

这是我的问题的后续行动:

error in java basic test program

这仍然令我感到困惑。 所以具体问题是:

我已经完成了一个包和目录。 比如com.learn.java.mypackage

$ pwd
.../com/learn/java/mypackage

在这里我想在同一个包中创建一个测试程序并执行它。

$cat TestPackage.java

package com.learn.java.mypackage;

public class TestPackage
{

public static void main(String args[])
{
System.out.println("Hello World\n");
}
}

$ javac TestPackage.java
// runs file

$ Java TestPackage


Exception in thread "main" java.lang.NoClassDefFoundError: TestPackage (wrong name: com/learn/java/TestPackage)

如果java运行时希望确保属于某个包的文件位于同一个命名目录中,则此处为true。那它为什么还要残疾?

5 个答案:

答案 0 :(得分:1)

编译在与java文件相同的目录中可以正常工作 但是,要运行java程序,您需要转到程序包启动的目录,并向命令提供完整的程序包信息

转到包含com文件夹的目录并使用

java com.learn.java.mypackage.TestPackage

答案 1 :(得分:1)

您应该从java com.learn.java.mypackage.TestPackage的父文件夹中执行com

因此,如果com的完整路径为/my/project/folder/com/...,您应该从java com.learn.java.mypackage.TestPackage

致电/my/project/folder

从聊天中粘贴:

您可以在任意位置使用java -cp /my/project/folder a.b.c.ClassName,告诉java查找包ClassName中找到的类a.b.c,并且应该在路径中搜索包: /my/project/folder

答案 2 :(得分:0)

.添加到类路径中,并使用完全限定名称(带包)

java -cp。 com.learn.java.mypackage.TestPackage

答案 3 :(得分:0)

this Java tutorial提供了解释:

classes目录的完整路径\ classes称为类路径,并使用CLASSPATH系统变量进行设置。编译器和JVM都通过将包名称添加到类路径来构造.class文件的路径。例如,如果

<path_two>\classes

是您的类路径,包名称是

com.example.graphics, 然后编译器和JVM在

中查找.class文件
<path_two>\classes\com\example\graphics.

类路径可能包含多个路径,用分号(Windows)或冒号(Unix)分隔。默认情况下,编译器和JVM搜索当前目录和包含Java平台类的JAR文件,以便这些目录自动出现在类路径中。

答案 4 :(得分:0)

您必须以这种方式使用标记“-d”编译文件:

javac -d。 TestPackage.java java TestPackage.java

尝试!