当前位置: 技术问答>java相关
为什么加上package就不行?
来源: 互联网 发布时间:2015-04-22
本文导语: jdk目录:d:jdk server.java 路径:d:javahostserver.java /* server.java */ package host; public class server { public server() { System.out.println("server up"); } public static void main(String[] args) { server server1 = new server(); ...
jdk目录:d:jdk
server.java 路径:d:javahostserver.java
/* server.java */
package host;
public class server {
public server() {
System.out.println("server up");
}
public static void main(String[] args) {
server server1 = new server();
}
}
我做了
set path=d:jdkbin
set classpath=.;d:java;d:jdklib; /* 等等 */
然后我在d:javahost下
javac server.java
通过
但是
java server
就出如下异常
Exception in thread "main" java.lang.NoClassDefFoundError: server (wrong name: h
ost/server)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
如果我去掉package host
javac server.java
java server
通过
不知为什么,请指教!
server.java 路径:d:javahostserver.java
/* server.java */
package host;
public class server {
public server() {
System.out.println("server up");
}
public static void main(String[] args) {
server server1 = new server();
}
}
我做了
set path=d:jdkbin
set classpath=.;d:java;d:jdklib; /* 等等 */
然后我在d:javahost下
javac server.java
通过
但是
java server
就出如下异常
Exception in thread "main" java.lang.NoClassDefFoundError: server (wrong name: h
ost/server)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
如果我去掉package host
javac server.java
java server
通过
不知为什么,请指教!
|
在C:tmp>建立host目录,将server,java防到host目录
C:tmp>cd host
C:tmphost>javac server.java
C:tmphost>cd ..
C:tmp>java host.server
server up
C:tmp>
C:tmp>cd host
C:tmphost>javac server.java
C:tmphost>cd ..
C:tmp>java host.server
server up
C:tmp>
|
一般而言java文件和class文件是应该放在不同目录下的,拿这个问题为例,你可以
1.在D:java下创建两个目录:D:javasrc, D:javaclasses
2.如果你是在D:javasrc下对java文件进行编译,则javac -d ..classes Server.java, 这条命令会在D:javaclasses目录下生成一Server.class文件
3.将D:javaclasses设置进classpath
4.运行则java host.Server即可
1.在D:java下创建两个目录:D:javasrc, D:javaclasses
2.如果你是在D:javasrc下对java文件进行编译,则javac -d ..classes Server.java, 这条命令会在D:javaclasses目录下生成一Server.class文件
3.将D:javaclasses设置进classpath
4.运行则java host.Server即可