2013-10-09 86 views
-1

我写了一个命名方案HelloWorld.java 并存储在一个文件夹(封装)test该测试包括hello文件夹本身。 和所有在我的工作区。如何访问软件包?

我的意思是这样:d:\workspace\test\hello\HellWorld.java
我在我的道路环境进入d:\workspace,我的代码:

package test.hello; 
public class HelloWorld 
{ 
public static void main(String[] args) 
    { 
     System.out.println("HelloAll"); 
    } 
} 

当我去到CMD hello目录和编译HelloWorld.java一切都很好,做。 但我用java HelloWorld(在d:\workspace\test\hello)我得到的线索主要错误异常。

你能帮我做这个只是简单的问题?

+1

“在线程主体错误,我得到exeption” - 什么是确切的错误信息?它包含有关错误的重要信息。 – Jesper

+0

Exepction in thread“main”java.lang.NoClassDefFoundError:HelloWorld <错误名称test \ hello \ HelloWorld –

回答

1

在CMD窗口去d:\工作区,并发出以下CMD

d:>workspace>java test.hello.HelloWorld

+0

我知道这个..但我想调用HelloWorld而不声明特定的目录! 我该怎么做? 是真的吗?! 我想,因为我写了Java HelloWorld,它符文。 –

+3

@ user2857832这是不可能的,当你想运行一个具有main方法的类时,你必须指定它的全限定名,即包含包。除非您在默认包中定义类,否则在这种情况下,完全限定名称本身就是类名称,但这不鼓励。 – A4L

+0

你的意思是如果我写一个不包含main方法的类,并编译,那么我可以运行它没有特定的目录? –

1

CD至d:\工作区

编译using-

javac -d . HelloWorld.java

上面将创建封装结构。

运行using-

java test.hello.HelloWorld

+0

我刚做了包b4编写代码... :-D –

1

您需要从源目录即d:\workspace使用java命令这里提到:

java test.hello.HelloWorld 

的语法很简单,只要到你的源代码目录不是软件包目录。使用类名和完整软件包名称。

+0

我知道这个..但是我想调用HelloWorld而不声明特定的目录!我怎样才能做到这一点?一切都是真的吗?!我想,我所著的Java的HelloWorld,这符文 –

+0

@ The.Only.One你不能没有,除非它存在于默认pacakge包名称运行的Java类。原因很简单,你可能有多个具有相同名称但不同包中的类。 –

2

您必须使用类的完全合格的名称来运行它。

站在d:\workspace\

运行:

java test.hello.HelloWorld 
+0

我知道这一点,但我想调用HelloWorld而不声明特定的目录!我怎样才能做到这一点?一切都是真的吗?!我想,我所著的Java的HelloWorld,这符文 –

+0

@ user2857832然后,你需要删除'包test.hello;'在HelloWorld.java。当HelloWorld是特定软件包的一部分时,你无法做到这一点。 – nos