Tetsprogramm aus jar aufrufen

Von: , Frage gestellt am So, 1. Feb 2009

Hallo,
ich bin soeben auf ein jar gestoßen, welches mir das aktuelle Wetter anzeigen kann.
Enthalten ist auch ein Beispielprogramm, aber ich bekomm es einfach nicht ans laufen...
Da fehlt wohl eine Kleinigkeit. Hab schon viel gesucht und gelesen, mal fehlte das Manifest file im jar mal sollte man den classpath setzen etc. etc.

jar datei:
http://developerlife.com/weather.com/weather_service...
(von: http://developerlife.com/tutorials/?p=18)

Ich hab mir das jar mal angeguckt und ausgepackt, und dann folgendes probiert (unter anderem..)
javac -cp dist/weather_service.jar TestWeatherGateway.java
Wobei ich TestWeatherGateway.java auch in das Verzeichnis kopiert hab. So bekomme ich mehrere undefined Fehlermeldungen...
Wie ist also das richtige Vorgehen?

Ich will das jar später in ein bestehendes Programm mit einbinden, wollte es aber vorher mal testen.

Ich hoffe ihr könnt mir helfen, auch wenn solche Fragen wohl immer wieder kommen...

Danke!

4 Antworten zu dieser Frage

  1. Antwort von nach 2 Tagen 0 hilfreich
    Re: Tetsprogramm aus jar aufrufen

    Hallo,
    javac -cp dist/weather_service.jar TestWeatherGateway.java
    Wobei ich TestWeatherGateway.java auch in das Verzeichnis
    kopiert hab. So bekomme ich mehrere undefined
    Kompilieren brauchst du es nicht, da die Klasse TestWeatherGateway
    bereits im JAR enthalten ist.

    Aufruf wie folgt (Java 1.5 aufwaerts vorausgesetzt):

    java -jar d:\temp\weather_service\dist\weather_service.jar
    


    Dazu muss aber vorher ein Eintrag in die MANIFEST.MF (im JAR in META-INF):

    Main-Class: weather_service.TestWeatherGateway
    


    Mit einem adaequaten ZIP-Programm (z.B. 7-Zip), kannst du das
    quasi on-the-fly erledigen.

    Gruss
    Patrick

    • Antwort von nach 2 Tagen 0 hilfreich
      Re^2: Tetsprogramm aus jar aufrufen

      Der Hinweis auf die Java-Version brachte die Loesung...daher konnte es ja nicht klappen. Ich hab das hier auf einem Linux System getestet, und da war noch eine alte Version installiert...

      Werde jetzt die neuste mal installieren und dann weitersehen.
      Danke schon mal!

      • Antwort von nach 2 Tagen 0 hilfreich
        Re^3: hmmmm

        soll heissen: will immer noch nicht so...
        $ java -version
        java version "1.6.0_07"
        Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
        Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

        $ java -jar weather_service.jar
        Exception in thread "main" java.lang.NoClassDefFoundError: weather_service/TestWeatherGateway
        Caused by: java.lang.ClassNotFoundException: weather_service.TestWeatherGateway
        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:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

        Irgendwie komisch, dass der seine eigene klasse nicht findet, oder?

        • Antwort von nach 2 Tagen 0 hilfreich
          Re^4: hmmmm

          Irgendwie komisch, dass der seine eigene klasse nicht findet,
          oder?
          Wundert mich jetzt auch.

          Bei mir funktioniert es tadellos:

          [d:\temp\weather_service\dist]java -version
          java version "1.6.0_05"
          Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
          Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
          [d:\temp\weather_service\dist]java -jar weather_service.jar
          looking up location 20166 :: should work ok
          04.02.2009 15:55:09 weather_service.weatherprovider.WeatherGateway doSearchQuery
          [...]
          


          Gruss
          Patrick

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!