这是从网上下的hibernate的jar包,以前双击正常打开,现在双击就报这个错,得用其他方式才能打开
D:\>java -jar hibernate3.jar
Failed to load Main-Class manifest attribute from
hibernate3.jar这是自己写的一个程序,打成的jar包,双击就报以下异常
D:\>java -jar xxxxx.jar
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:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: xxxx. Program will exit.这是一个helloworld的程序,就一个简单的输出,竟然也报错,真是无语了
D:\>java -jar Teacher.jar
Invalid or corrupt jarfile Teacher.jar希望有高人能够帮我下,困扰我两天没睡好觉了,真的很累!

解决方案 »

  1.   

    你需要设置一个Main-Class,否则是不能通过双击或者java -jar打开的
      

  2.   

    在 jar里的 meta-inf里,给你个例子Manifest-Version: 1.0
    Class-Path: ./lib/swt.jar
    Main-Class: MyEclipseKeyGen
      

  3.   

    不是mainclass没有设置的问题,而是无法找到还有这个警告 
    2010-3-5 3:28:07 java.util.jar.Attributes read
    警告: Duplicate name in Manifest: SHA1-Digest.
    Ensure that the manifest does not have duplicate entries, and
    that blank lines separate individual sections in both your
    manifest and in the META-INF/MANIFEST.MF entry in the jar file.
      

  4.   

    现在可以肯定是classpath的问题了,前天刚刚配了下系统环境变量,以前从来没出现这种错误的
      

  5.   

    还有mainclass后面要有一个空格……
      

  6.   

    我的环境下是:
    E:/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.5.0.v3550b.jar
    LZ找到org.eclipse.swt.win32.win32.x86_.....jar,加到classpath里去试试。
      

  7.   

    我的环境变量配置:
    ==============================================================================
    就jdk最新版本1.6来讲
    具体配置如下( !!!切记如果你安装了oracle/sql 一定要把PATH 'C:\Program Files\Java\jdk1.6.0_01\bin'的配置放在oracle的配置之前!!! )CLASSPATH.;C:\Program Files\Java\jdk1.6.0_01\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_01\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_01\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_01\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_01\jre\lib\javaws.jar
    JAVA_HOMEC:\Program Files\Java\jdk1.6.0_01PATHC:\Program Files\Java\jdk1.6.0_01\bin