Ergebnis 1 bis 7 von 7
  1. #1
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    780

    Java jar File in jar File verschachteln

    Hi, ich habe ein kleines Progrämmschen in Java erstellt, mit Hilfe von Eclipse.

    Das Programm beinhaltet ein Websocket server, den ich wiederum schon als fertiges jar File vorliegen habe.

    Das habe ich dann in den Projekt Einstellung eingefügt.
    eclipse.png

    Starte ich nun aus Eclipse heraus meine Anwendung ist alles in Ordnung.

    Exportiere in nun mein Project als jar File, findet die JRE das Socket Server jar nicht mehr.
    java.lang.ClassNotFoundException: org.java_websocket.server.WebSocketServer

    Ich hättet ja gerne die Websocket server klasse in meinem exportierten jar File gerne mit drinnen. Geht das?

    Oder muss ich auf die Source zurückgreifen und dann dort mit dem package Schlüsselwort arbeiten.

    Am ende hätte ich gern eine einzige Datei.



    *Ich hoffe doch das hier im Forum der ein oder andere mit Java rum macht. Ist ja schließlich die Programmiersprache des Jahres 2017

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.534

    AW: Java jar File in jar File verschachteln

    Soll das am Ende in einem Standard Browser laufen?
    Dann muss das aber signiert werden. Hast du das schon mal gemacht?

    Ein Tut zu deiner Frage: Jar-Archiv "von Hand" erstellen
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png
    Sorry wenn ich manchmal ohne Hallo und nur klein schreibe! Dann bin ich nicht unfreundlich sondern mit nervigem kleinem Touch Tablet zugange

  3. #3
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    780

    AW: Java jar File in jar File verschachteln

    Zitat Zitat von mikdoe
    Soll das am Ende in einem Standard Browser laufen?
    Nope.

    Danke für den Link aber das ist nicht so recht das nachdem ich gesucht habe.

    Ich habe ein Eclipse Projekt nennen wir es "Updater". Dieses Projekt benötigt diese lib: https://github.com/TooTallNate/Java-WebSocket/wiki

    Diese lib habe ich in Eclipse als " Referenced Libraries" importiert. Starte ich das Projekt in Eclipse geht alles einwandfrei.

    Exportiere ich mein Project als jar, fehlt mir dann die Socket lib. Eclipse packt die nicht mit ein.

    Wie erreiche ich das, das ich am ende nur noch eine jar Datei habe.

    *Durch mein unwissendes rumprobieren habe ich mir jetzt auch noch mein Projekt zerschossen. ich erhalte nun immer die Fehlermeldung:
    The method onStart() of type com must override or implement a supertype method com.java /QRSSB_Linux_Launcher/src line 73 Java Problem

    Bein ausführen kommt dann in dieser Zeile:
    Code:
    	@Override
    	public void onError(WebSocket conn, Exception ex) {
    		System.err.println("an error occured on connection " + conn.getRemoteSocketAddress()  + ":" + ex);
    	}
    eine NullPointerException.

    Ja un nun??
    Geändert von xorg1990 (30-11-2017 um 21:51 Uhr)

  4. #4
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.606

    AW: Java jar File in jar File verschachteln


  5. #5
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    780

    AW: Java jar File in jar File verschachteln

    Neieeeen nicht entpacken umgedreht verpacken.

    Nochmal mein Projekt benötigt die lib Java-WebSocket. Die habe ich mir fertig kompiliert als jar File heruntergeladen.

    Und in den Eclipse Einstellungen als Referenced Libraries angegebenen.

    Exportiere ich nun mein Projekt als jar, findet die JRE die WebSocket lib nicht mehr. Das starten heraus aus Eclipse funktioniert problemlos.

    Das manuelle hinzufügen der Klasse via winZip funktioniert nicht.
    Ich muss also irgendwas an der manifest.mf Datei verändern, aber was???

    Ich dachte ja Eclipse macht das.

  6. #6
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.606

    AW: Java jar File in jar File verschachteln

    Zitat Zitat von xorg1990 Beitrag anzeigen
    umgedreht verpacken.
    da bin ich mir fast sicher, dass das eclipse für dich m,acht

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Nochmal mein Projekt benötigt die lib Java-WebSocket. Die habe ich mir fertig kompiliert als jar File heruntergeladen.
    jeder andere hätte das jar einfach genommen

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Ich muss also irgendwas an der manifest.mf Datei verändern, aber was???
    classpath, aber das sollte eclipse vermutlich schon eingetragen haben

  7. #7
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    780

    AW: Java jar File in jar File verschachteln

    Zitat Zitat von tsseh
    classpath, aber das sollte eclipse vermutlich schon eingetragen haben
    Habs über ein Plugin gelöst Fat-jar:
    Fat Jar Eclipse Plug-In


    Aber mein Projekt funktioniert nicht mehr.
    Habe diesen code in der Klasse com:
    Code:
    import java.net.InetSocketAddress;
    import org.java_websocket.WebSocket;
    import org.java_websocket.handshake.ClientHandshake;
    import org.java_websocket.server.WebSocketServer;
    
    public class com extends WebSocketServer {	
    	private String usedComPort = null;
    	private QRSSB_Linux_Launcher main = null;
    	
    	public com(InetSocketAddress address) {
    		super(address);
    	}
    
    	@Override
    	public void onOpen(WebSocket conn, ClientHandshake handshake) {
    		conn.send(main.getComPorts());
    	}
    
    	@Override
    	public void onClose(WebSocket conn, int code, String reason, boolean remote) {
    		String bash_comm = null;
    		if( usedComPort != null) {
    			Runtime rt = Runtime.getRuntime();
    			bash_comm = "stty -f /dev/"+usedComPort+ " hupcl";
    	        try {
    	       	 rt.exec(bash_comm);
    			}catch (Throwable t){
    				t.printStackTrace();
    			}
    		}
    		Runtime rt = Runtime.getRuntime();
    		bash_comm = "kill "+ main.getPid();
            try {
           	 rt.exec(bash_comm);
    		}catch (Throwable t){
    			t.printStackTrace();
    		}
    	}
    
    	@Override
    	public void onMessage(WebSocket conn, String message) {
    		String[] commands = message.split(",");
    		String onOrOff = commands[2];
    		String comPort = commands[0];
    		usedComPort = comPort;
    		String bash_comm = null;//{"bash", "-c", "null"};
    		
    		if(onOrOff.equals("on")) {
    			bash_comm = "stty -f /dev/"+comPort+ " -hupcl";
    		}else {
    			bash_comm = "stty -f /dev/"+comPort+ " hupcl";
    		}
    		Runtime rt = Runtime.getRuntime();
            try {
           	 rt.exec(bash_comm);
    		}catch (Throwable t){
    			t.printStackTrace();
    		}
    	}
    
    	@Override
    	public void onError(WebSocket conn, Exception ex) {
    		System.out.println(conn);
    		System.err.println("an error occured on connection " + conn.getRemoteSocketAddress()  + ":" + ex);
    	}
    	
    	@Override
    	public void onStart(){
    		main = new  QRSSB_Linux_Launcher();
    		System.out.println("server started successfully");
    	}
    Hier
    Code:
    @Override
    	public void onStart(){
    		System.out.println("server started successfully");
    	}
    Sagt mir Eclipse
    The method onStart() of type com must override or implement a supertype method
    Nehme ich das @Override weg ist die Fehlermeldung weg.

    Aber beim Ausführen wird die Funktion gar nicht ausgeführt.

    Starte ich dann eine Websocket Verbindung kommt es dazu:
    an error occured on connection /127.0.0.1:58674:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58674:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58878:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58878:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58884:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58884:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58946:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58946:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58956:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:58956:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:39232:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:39232:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:39286:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:39286:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:40148:java.lang.NullPointerException
    an error occured on connection /127.0.0.1:40148:java.lang.NullPointerException
    Bevor ich mit dem Jar Exportieren angefangene ging alles tadellos.

    - - - Aktualisiert - - -

    Ok, gelöst. Habe auf die neuste java-websocket lib aktualisiert Version 1.3.6 geht jetzt.

    Eine Farge habe ich dennoch.
    Bei der Anwendung hantelt es sich um einen Updater. Diesen habe ich für Windows Systeme einmal in C# programmiert und für alle anderen Systeme in Java.
    Der Upadter lädt ein Zip herunter und entpackt dieses dann in den Order indem sich die Updater.exe selbst befindet.

    Mein bedenken ist halt kann ich eine exe ersetzten während diese selbst ausgeführt wird?
    Für Java die selbe Frage kann ich ein jar File ersetzen Während dieses ausgeführt wird?

Ähnliche Themen

  1. Java Webapp zu einer .war file mit maven compilen
    Von milesdavis im Forum allgemeine Diskussionen und News zu Themen rund ums Internet
    Antworten: 1
    Letzter Beitrag: 13-10-2016, 10:09
  2. Wie rufe ich ein *.php file von einem *.php file auf
    Von MikeTurrento im Forum Serverseitige Programmierung
    Antworten: 4
    Letzter Beitrag: 02-08-2006, 08:39
  3. File auswahl ohne file upload
    Von michl4ever im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 15-07-2006, 20:58
  4. include file akzeotiert kein java script
    Von nila im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 14-07-2005, 14:35
  5. Log file
    Von Torres B.I.G. im Forum Tools und Programme
    Antworten: 4
    Letzter Beitrag: 21-08-2001, 23:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •