Primero: me doy cuenta de que este problema debe ser muy simple y un montón de gente que parece que ha experimentado. Sin embargo, parece que mi problema puede ser ligeramente diferente de los puestos existentes.

Estoy usando NetBeans para compilar una aplicación Java. Cuando se hace la construcción, la salida va a la dist\ carpeta correctamente. El archivo jar está presente allí. Si voy a la línea de comandos, vaya a la carpeta, y llamar a los siguientes:

java -jar Prosperity.jar

todo funciona bien. Obviamente el nombre de la aplicación es la Prosperidad. El siguiente comando también funciona bien:

javaw -jar Prosperity.jar

Sin embargo, haga doble clic en el .archivo jar da el mensaje: «no se Pudo encontrar la clase principal:» y, a continuación, proporciona la ruta de acceso a la .el archivo jar. He comprobado cientos de veces que la carpeta META-INF existe dentro de el .archivo jar, y que dentro de ella existe un MANIFIESTO.MF con la correcta principal nombre de la clase. También he comprobado que la clase principal (App.class) .archivo de clase que existe en el interior de la .archivo jar.

Así que la pregunta es: ¿cuál es la diferencia entre hacer doble clic en un archivo y se ejecuta javaw en él? Es realmente frustrante que no solo corre!

Gracias por la dirección que usted me puede dar, estoy tearin’ mi pelo fuera de aquí!

  • Parece que de alguna manera Java es llegar a la idea de que mi clase principal es en realidad el nombre de la RUTA de acceso al archivo jar que estoy corriendo. Ni idea de cómo es que viene con eso. Parece estar ignorando el valor en el manifiesto y en busca de una clase principal con el nombre de: C:\Users\MyUser\MyApp\Prosperity.jar. Estoy asumiendo que si podía averiguar cómo que se está convirtiendo en el nombre de la clase principal que se busca, entonces yo podría resolver el problema.
InformationsquelleAutor aardvarkk | 2011-03-25

6 Comentarios

  1. 25

    Tal vez sus asociaciones de archivos quedó en mal estado. En el símbolo del sistema, intente ejecutar

    ftype | find "jarfile"

    En mi 64 bits de Windows 7 ordenador, que muestra

    jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

    También se puede cambiar con ftype:

    ftype jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
    • Este fue el billete. Para que realmente las cosas movin’, he descargado un programa llamado unassoc cuyo propósito es eliminar todos los rastros de las asociaciones de archivo. También es de reseñar el hecho de que mi instalación de la aplicación estaba haciendo un silencio instalar el JRE, que (en silencio, por supuesto!) no asociado .los archivos jar correctamente. Así que he tenido que cambiar el programa principal instalar para no hacer una instalación silenciosa, y también limpiar mi asociaciones de archivo. Después de volver a instalar el JRE, yo podría ejecutar el .jar archivo haciendo doble clic en él. Sólo deseo que yo sabía lo que la asociación de archivos parecía cuando estaba roto…
    • Me alegra ver que tengo trabajo. Supongo que la incorrecta asociación faltaba el -jar parámetro. Que causa el error que usted ha mencionado.
    • Basado en «parece que de alguna manera Java es llegar a la idea de que mi clase principal es en realidad el nombre de la RUTA» creo que lo que pasó fue que %1 no tiene comillas alrededor de ellos y que el frasco estaba situado en un camino, incluyendo un espacio.
    • Gracias a ambos por la ayuda! Lo que una pesadilla en la que estaba. Realmente odio cuando las cosas sencillas ir mal…
    • Esto es extraño porque tengo el mismo problema, pero difiere en la forma en que me generan los frascos. Como en Eclipse ejecutable jar funciona bien, mientras que el uso de la grasa-jar plugin veo el mismo problema. Además no es realmente extraño que casi todos los otros usuario tiene este problema, si me pakcage mi aplicación, el usuario potencial no saber cómo cambiar la asociación de archivos? ¿Crees que la eliminación de archivos assoc es la única razón para este problema?
    • Por lo que he visto, los problemas se produce cuando tiene otras bibliotecas que se hace referencia en la construcción de la ruta de acceso que usted tenga que incluir en el archivo jar que se va a exportar. De otro modo un solo frasco funciona bien, estoy seguro de que hay más a él, a continuación, sólo las asociaciones de archivo.
    • Habiendo metido hasta las asociaciones de archivos es una forma de obtener el mensaje de error. Generalmente, el error es causado por algún otro problema, aunque. Si usted no tiene la clase principal enumerados en el manifiesto en el archivo jar, o si la clase principal no está en el archivo jar, creo que obtendrá este mensaje de error también.
    • Un mal la versión de JRE instalado a menudo puede causar este error. Para mí el error apareció con JRE6 pero cuando he instalado JRE7 todo funcionó a la perfección.

  2. 11

    Acabo de encontrar este post…

    Si usted tiene el problema sólo cuando haga doble clic en el archivo jar y no en cmd lanzamiento, probablemente debido a que la versión del JRE está mal (6 en lugar de 7).

    Solo cambie el valor en regedit en :

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command]
    "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

    a :

    "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

    No debería haber ningún problema si este valor se actualiza.


    Nota : la Conmutación entre 32 y 64 bits versiones de Windows :

    -> "C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* va a utilizar la versión de 64 bits versión de JRE
    -> "C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" %* va a usar el de 32 bits versión de JRE

    • La misma. Como alternativa, también puede utilizar ftype comando de aprobado respuesta (con la nueva ruta de acceso).
    • Esto realmente ayudó. Gracias.
  3. 1

    búsqueda de su regedit y comprobar siga el artículo

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command]
    @="\"C:\Program Files (x86)\Java\jre6\bin\javaw.exe\" -jar \"%1\""
    
    
    [HKEY_CLASSES_ROOT\jarfile\shell\open\command]
    @="\"C:\Program Files (x86)\Java\jre6\bin\javaw.exe\" -jar \"%1\""
    
    
    [HKEY_CURRENT_USER\Software\Classes\Applications\javaw.exe\shell\open\command]
    @="\"C:\Program Files (x86)\Java\jre6\bin\javaw.exe\" -jar \"%1\""
  4. 1

    Me encontré con este error también. He comprobado el archivo de la asociación con símbolo del sistema y todo estaba correcto. No fue hasta que he intentado correr el .jar desde la línea de comandos utilizando java -jar MyProgram.jar que en realidad me mostró la raíz del problema.

    Resulta que el .frasco fue compilado bajo el JDK 7, mientras que yo sólo estaba ejecutando JRE 6. Este fue el error me es dada en el mensaje que me llevan a la solución real:

    Exception in thread "main" java.lang.UnsupportedClassVersionError: MyProgram/Program : Unsupported major.minor version 51.0
            at java.lang.ClassLoader.defineClass1(Native Method)
            at java.lang.ClassLoader.defineClassCond(Unknown Source)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$000(Unknown Source)
            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)
    Could not find the main class: MyProgram.Program. Program will ex
    it.
  5. 0

    Yo sólo tenía exactamente el mismo problema, fijo de la misma manera. Tuve que eliminar por completo la asociación, no sólo el usuario personalización, y vuelva a instalar el JRE.

    La asociación antes de la revisión aún era:

    jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

    Y después (el mismo):

    jarfile="C:\Program Files (x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*
    • lo siento, que estaba destinado a ser un comentario
  6. 0

    Si los métodos anteriores no resuelven el problema, intente eliminar el .jar el tipo de archivo desde su pc (se puede buscar en google un programa llamado Unassoc.exe y eliminar el tipo de archivo) y, a continuación, se ha solucionado el problema! (Al menos, esta es mi caso!)

Dejar respuesta

Please enter your comment!
Please enter your name here