从命令行传递args编译java程序

时间:2013-01-03 23:07:32

标签: java

我写了一个简单的java程序

package abc.def.ghi 
public class Foobar{


   public String printS(String s){
     System.Out.println(s);

 public static void main(String [] args){
   String s = args[0];
   Foobar foobar = new Foobar();
    foobar.printS(s);
}

现在我做了javac Foobar.java

它创建了一个类文件

然后我做了

java Foobar

Didnt工作

 java Foobar hi //args

Didnt工作

java -cp。 abc.def.ghi.Main

DIdnt工作。

我得到的错误是:

Exception in thread "main" java.lang.NoClassDefFoundError: abc/def/ghi/Main
Caused by: java.lang.ClassNotFoundException: com.intel.hadoop.graphbuilder.conf.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.intel.hadoop.graphbuilder.conf.Main.  Program will exit.

2 个答案:

答案 0 :(得分:3)

您是否将.class个文件放在路径(path to project)/abc/def/ghi/Foobar.class

NoClassDefFoundError: abc/def/ghi/Foobar

看起来你没有。

答案 1 :(得分:1)

如果使用

进行编译
javac -d . Foobar.java

然后编译器将.class文件放在正确的目录中以匹配其包名,然后

java abc.def.ghi.Foobar

应该成功运行。