自已编译一个SWT的应用,可是调用不了,命令行下报错如下,请各位大侠帮忙看看怎么回事?D:\zmrj>java -jar zmrj.jar -Djava.library.apth=.;.\lib form.MainWindowException in thread "main"java.lang.NoClassDefFoundError:
org/eclipse/jface/viewers/ISelectionChangedListenerCaused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>
org/eclipse/jface/viewers/ISelectionChangedListenerCaused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/vie
wers/ISelectionChangedListener
Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>回复:qsrock
我已经把Eclipse 自带的包:org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar 放到.\lib 中了,
另外的四个SWT的dll也放到D:\zmrj 目录中。我看过好多贴都是找不到main方法,可这里却是找不到:org.eclipse.jface.viewers.ISelectio
nChangedListener,奇怪!
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/vie
wers/ISelectionChangedListener
Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>回复:qsrock
我已经把Eclipse 自带的包:org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar 放到.\lib 中了,
另外的四个SWT的dll也放到D:\zmrj 目录中。我看过好多贴都是找不到main方法,可这里却是找不到:org.eclipse.jface.viewers.ISelectio
nChangedListener,奇怪!
你需要将包含org/eclipse/jface/viewers/ISelectionChangedListener 类的jar包放在classpath中,如:
java -cp .;org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar -jar zmrj.jar -Djava.library.path=.;.\lib form.MainWindow
楼上大哥的方法刚试过(是这个包:org.eclipse.jface_3.2.2.M20061214-1200.jar, 也放到.\lib 中了),还是不行,报同样的错...
只放在.\lib 中是没有用的,你必须用-cp在这个参数中指定其路径。-Djava.library.path参数不是指定的classpath,而是一些本地代码。
rj.jar -Djava.library.path=.;.\lib form.MainWindowException in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/vie
wers/ISelectionChangedListener
Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>上面的命令行,这样写对么?我真的不明白,为什么在Eclipse中就可以运行,发布出来后就这样...晕
D:\zmrj>java -cp .;.\lib\org.eclipse.swt.win32.win32.x86_3.2.2.v3236.jar -jar zmrj.jar -Djava.library.path=.;.\lib form.MainWindow 在eclispe中,这个jar文件已经在classpath中了
nChangedListener 按大哥的意思,我先试过,还是那样报错,我这里也把含org.eclipse.jface.viewers.ISelectio
nChangedListener这个类的包也写上,结果也一样:
D:\zmrj>java -cp .;.\lib\org.eclipse.jface_3.2.2.M20061214-1200.jar -jar zmrj.ja
r -Djava.library.path=.;.\lib form.MainWindow
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/vie
wers/ISelectionChangedListener
Caused by: java.lang.ClassNotFoundException: org.eclipse.jface.viewers.ISelectio
nChangedListener
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)D:\zmrj>可怜啊,给java折磨得两眼通红,也麻烦大哥了
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/graph
ics/Device
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.Device
at java.net.URLClassLoader$1.run(URLClassLoader.java:220)
at java.net.URLClassLoader$1.run(URLClassLoader.java:209)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:208)
at java.lang.ClassLoader.loadClass(ClassLoader.java:325)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:270)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:338)
Error: Could not find the main class.
Error: A JNI error has occurred, please check your installation and try again这个错误也困扰好长时间了,一直解决不了
ClassNotFound
这包在哪里,找不到啊
1 .;%JAVA_HOME%\lib\dt.jar;
2 这个才是问题的关键所在: %JAVA_HOME%\lib\tools.jar如果忘记设置的话就会这样,我是在添加了这项之后问题就解决的
public static void main(String[] args)
{
System.out.println(" ====欢迎来到java世界====" );
}
}用javac编译后,用java 调用时要严格按大小写来调用如:java HelloWorld如果你用的是:java helloworld就会出错。
另外,不能这样加扩展名:java HelloWorld.class