我有个程序在eclipse里面可以运行
当我导出jar的时候 双击jar提示找不到main class我cmd到class所在的顶层目录
设置了classpath 
并且把所有的包考到了lib目录下面。
java运行主类说找不到一个包里面调用的类F:\>java poireadexcel.ToolView
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge
ts/Layout
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Layout
        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)
Could not find the main class: poireadexcel.ToolView.  Program will exit.请大家帮忙说说   谢谢啊

解决方案 »

  1.   

    org.eclipse.swt.widgets.Layout没有呀。
    版本不同文件名不同。
    我的是 org.eclipse.swt.win32.win32.x86_3.5.0.v3550b.jar
    如果你用到jface,可能还需要:org.eclispe.jface_3.5.0.....jar
    我都是用windowbuilder生成工程的,它会把需要的jar都先引入工程。
    最后,jar放到classpath里面就不说了,swt用的dll别忘了放path(不是classpath)里面。
      

  2.   

    swing-layout-1.0.3.jar将这个包解压到根目录下Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widge 
    ts/Layout 

    这个异常就不会产生了,主要原因是swt中的layout需要这个包中的org/eclipse/swt/widge 这个文件夹中的内容,如何是swt以外的jar文件包含的类就不会出现这种问题,算是eclipse的这个插件的一个缺陷吧
      

  3.   

    我在插件文件件看到了org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar
    我把它直接复制到lib文件夹下没用吗  我这个工程在eclipse可以运行的             
    swt用的dll要放到path? 那在eclipse里面运行的时候path也应该要dll吧  
    应该有了吧 我不知道是哪些dll 
    我CLASSPATH设置为.;C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar
    吧所有的jar复制到了C:\Program Files\Java\jdk1.6.0_10\lib下
    还是说找不到。 
      

  4.   


    我怎么找不到swing-layout-1.0.3.jar
      

  5.   

    应该是清单文件没有设置吧。
    有解压软件,比如WinRar,好压等,打开xxx.jar
    打开META-INF文件夹,里面有清单文件MANIFEST.MF,用写字板打开它。
    在原文后令起一行,输入“Main-Class: yyy”,后面跟一个回车。
    (注:xxx为你所打包要运行的jar文件名,yyy为你运行这个jar时,首先运行的.class,yyy中不包含.class)
      

  6.   

    你可以把你的lib copy 到你的jar同级目录下
    另外你可以试试把你的jre也copy 到同级目录
    还可以 查看MANIFEST.MF 文件里面的内容是不是正确的
      

  7.   

    你所做的试验,并不能验证main class这个问题。
    Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Layout 
    这个异常说明你的CLASSPATH不对。
    找不到main class 是因为你打包打的不对。
    你看看你的MANIFEST.MF文件,估计是没设置main class。jar -jar xxx.jar

    java xxx.xxx.xxClass
    这俩是不一样的。
    后面一个运行成功,并不代表前面那个没问题。
      

  8.   

    swing-layout-1.0.3.jar 就在你建立的java工程中的lib文件夹里