2012-03-30 30 views
0

我有简单的java程序,名为MainController.java。我试图通过编写javac MAinController.java来存储我的MainController.java文件的目录进行编译,它编译正确并在同一目录中生成MainController.class文件。现在 1)当我试图通过编写的“java MainController”运行该文件,它给了我在Ubuntu中设置classpth

Exception in thread "main" java.lang.NoClassDefFoundError: MainController (wrong name: cased/test/MainController) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    Could not find the main class: MainController. Program will exit. 
    [email protected]:~/workspace/Test/src/cased/test$ 

我知道有一些问题,我的类路径。我如何设置?我希望当我从Maincontroller.class文件所在的目录运行命令“java maincontroller”时,它应该运行它。每次我想运行它时,我都不想将-cp参数传递给java命令。

对于JVM的信息,我跑了 “Java的版本” 并显示如下:

Java版本 “1.6.0_22” OpenJDK的 运行时环境(IcedTea6 1.10.6)(6b22-1.10.6-0ubuntu1) OpenJDK Server VM(build 20.0-b11,混合模式)

请告诉我如何设置classpath变量以及它为jvm设置的内容。

预先感谢您。

回答

0

当您执行MainController时,您需要添加软件包名称。从你的~workspace/Test/src目录,执行以下命令:

javac cased/test/MainController.java 
java cased.test.MainController 
0

如果你不想每次都设置-cp标志,你可以使用CLASSPATH环境变量。 但你可能想把这个变量设置到你的通用jar目录(就像你的lib目录和src在你的项目中)。

无论如何,它似乎是一个问题是,你需要设置完整的类名称 - 包+级, 例如用于类MAinController是你应该使用org.examples包: javac的org.examples。 MAINController 从您的项目主目录

+0

如果我想指定classpath环境变量,我该怎么做?我的意思是可以告诉我的语法?并在哪里写它? – Ragini 2012-03-30 14:40:25

+0

export CLASSPATH =“/ home/user/project/lib:/ home/usr/project/src” – shem 2012-03-30 15:59:01