我写了一个很简单的测试程序 ,代码如下:package UnionCast.LogParse;import java.util.*;
public class mytest
{
public static void main(String[] args)
{
System.out.println("hello world");
}
}在 Linux 下 我自己的目录下 执行
[root@test171 LogParse]# javac mytest.java
可以通过
但执行
[root@test171 LogParse]# java mytest
就会报错:
Exception in thread "main" java.lang.NoClassDefFoundError: mytest (wrong name: LogParse/UnionCast/LogParse/mytest)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
如果把程序头部的 package UnionCast.LogParse; 去掉,就可以正常输出 hello world 请教该如何解决?
public class mytest
{
public static void main(String[] args)
{
System.out.println("hello world");
}
}在 Linux 下 我自己的目录下 执行
[root@test171 LogParse]# javac mytest.java
可以通过
但执行
[root@test171 LogParse]# java mytest
就会报错:
Exception in thread "main" java.lang.NoClassDefFoundError: mytest (wrong name: LogParse/UnionCast/LogParse/mytest)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
如果把程序头部的 package UnionCast.LogParse; 去掉,就可以正常输出 hello world 请教该如何解决?
对包的理解估计要细想一下
在 [root@test171 UnionCast]# javac UnionCast.LogParse.mytest.java提示 error: cannot read: UnionCast.LogParse.mytest.java
用java UnionCast.LogParse.mytest
javac UnionCast\LogParse\mytest.java
java UnionCast\LogParse\mytest
你再试试
用java UnionCast.LogParse.mytest运行。
编辑path和classpath