Java-Applikation auf einem anderen Rechner starten

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Hallo Forengemeinde,

ich möchte gerne ein Java-Programm auf einem anderen Rechner laufen lassen, ohne die Java-Runtime zusätzlich installieren zu müssen. Ich habe mir Beispiel-Programme heruntergeladen, wo so was geht.

D. h. ich habe diese Programme normal unter Windows mit Hilfe eines Setup-Programms installiert und konnte dieses Programm ohne die Java-Runtime-Maschine starten und ausführen (diese war auf dem Rechner NICHT installiert und ist durch dieses Beispielprogramm auch nicht installiert worden).

Hier im Forum habe ich schon gesehen, dass so was auch per CD möglich ist. Das Programm soll aber nicht auf CD, sondern per Download bereit stehen. Der Anwender führt nur noch das Setup-Programm durch und arbeitet anschließend mit dem Programm.

Wie kann ich so etwas realisieren?
 

L-ectron-X

Gesperrter Benutzer
Ein Java-Programm ohne Java-Runtime auszuführen geht schlicht gesagt nicht.
Du musst also, um ein Java-Programm auszuführen, wenigstens immer eine passende JRE mit ausliefern.
Und dass dann nicht nur für eine Plattform, sondern für alle, auf denen das Programm laufen soll.
Da kann ein Download schon mal eben mehrere zig MB groß werden.
 

Alex_winf01

Top Contributor
Ich habs mir schon gedacht. Ich werde wohl eine kleine bat-Datei schreiben, in der ich die entsprechende Runtime installieren lasse. Die Anwender des Programms arbeiten mit Windows. Entsprechend ist es nur eine Runtime, die ich mit liefern muss.

Dann habe ich noch eine Frage:

Ich muss eine SQL-Datenbank mitliefern, die dann beim Anwender unter dem localhost laufen soll. Ich habe daran gedacht, die Installation von MySQL auch über die bat-Datei laufen zu lassen und dann die ganzen CREATE-TABLE-Anweisungen usw. über eine Java-Installationsroutine laufen zu lassen.

Gibt es da einen "einfacheren" Weg? Der Anwender soll dann das Programm auch in einem beliebigen Pfad hinkopieren können.
 

foobar

Top Contributor
Guck dir mal IzPack an, das ist ein Java-Installer. Es gibt auch die Möglichkeit einen Nativenlauncher zu verwenden, der überprüft ob ein JRE vorhanden ist und dann entweder ein JRE runter lädt, ein gebundletes installiert oder was auch immer.
Als DB kann ich dir HSQLDB empfehlen, das ist eine in-Memory-Java-DB, bei der hast du auch keine INstallationsprobleme.

http://www.izforge.com/izpack/index.php?page=home
 

Alex_winf01

Top Contributor
@ foobar

Vielen Dank zunächst. Ich sitze gerade daran, HSQLDB in di Classpath einzubinden. Ich gehe wie folgt vor:

- Datei entzippen
- Kommandozeile öffenen, in das Verzeichnis gehen, wo HSQLDB liegt und gebe ein jar -xf hsqldb.zip.

Ich bekomme dann den Fehler, dass das Kommando jar nicht gefunden werden konnte. Meine Java-Umgebung funktioniert aber. :bahnhof:
 

Niki

Top Contributor
verwendest du selbst ein jdk oder auch nur ein jre, beim jre ist keine jar.exe dabei
 

The_S

Top Contributor
Alex_winf01 hat gesagt.:
Ich bekomme dann den Fehler, dass das Kommando jar nicht gefunden werden konnte. Meine Java-Umgebung funktioniert aber. :bahnhof:

Schau mal ob es in den Umgebungsvariablen (PATH) eingetragen ist.
 

Alex_winf01

Top Contributor
@ Niki

Ich habe folgendes installiert:

- Java2 Runtime Enviroment, SEv 1.4.2_07
- Java SDK, SE v1.4.2_07

@ Hobbit_Im_Blutrausch

Ich benutze den Joe als Editor. Wie kann ich aus einem DOS-Kommandofenster nachschauen, ob es in der PATH eingetragen ist?
 

The_S

Top Contributor
Alex_winf01 hat gesagt.:
@ Hobbit_Im_Blutrausch

Ich benutze den Joe als Editor. Wie kann ich aus einem DOS-Kommandofenster nachschauen, ob es in der PATH eingetragen ist?

mit "set" kannst du dir alle Variablen anschauen. Komfortabler ist es aber über Arbeitsplatz => Eigenschaften => Erweitert => Umgebungsvariablen ;)
 
G

Guest

Gast
Habs mir gerade angeschaut. Ist nicht gesetzt. Wie muss denn der set-Befehlt aussehen?

set path ist klar und dann? :bahnhof:
 

Brainiac

Bekanntes Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
Alex_winf01 hat gesagt.:
Arbeitsplatz => Eigenschaften => Erweitert => Umgebungsvariablen ;)
erweitere einfach die Pfadangabe dort um den Ort wo bei Dir Java installiert ist (bis zum bin Verzeichnis). Einzelne Einträge in der Pfad-Variable werden mit ; getrennt.

Bei mir wäre das: ;D:\Java\jdk1.5.0_07\bin
 

The_S

Top Contributor
Brainiac hat gesagt.:
Hobbit_Im_Blutrausch hat gesagt.:
Alex_winf01 hat gesagt.:
Arbeitsplatz => Eigenschaften => Erweitert => Umgebungsvariablen ;)
erweitere einfach die Pfadangabe dort um den Ort wo bei Dir Java installiert ist (bis zum bin Verzeichnis). Einzelne Einträge in der Pfad-Variable werden mit ; getrennt.

Bei mir wäre das: ;D:\Java\jdk1.5.0_07\bin

so schauts aus, danach braucht windows aber n Neustart :autsch:
 

Alex_winf01

Top Contributor
Auf einem anderen Rechner bekomme ich jetzt zumindestens keine Fehlermeldung mehr wegen dem JAR-File. Wie muss ich den Server jetzt starten und wie kann ich jetzt Tabellen anlegen, ändern usw.? Wie muss ich die DB über Java ansteueren?
 

Alex_winf01

Top Contributor
Ich habe dann noch eine andere Frage:

Ich habe eine Überschrift, die wie folgt aussieht:



Meine Fragen:

a) Man sieht, dass E verbunden ist, die Zellen darunter nicht. Genügt hierfür eine JTable, indem ich die Headerzeile anpasse?
b) Wenn nein, wie muss ich JGrid einbauen und ist das überhaupt das richtige Layout? Unter der Überschrift A, B, C... kommen normale Daten. Ich habe nämlich schon mal probiert, JGrid einzubinden. Wie muss ich das machen?
 

Alex_winf01

Top Contributor
Dann habe ich noch weitere Fragen:

Code:
import java.sql.*;


public class DatenbankTest {

    Connection conn;   
   
    public DatenbankTest(String db_file_name_prefix) throws Exception {
        // Load the HSQL Database Engine JDBC driver
        // hsqldb.jar should be in the class path or made part of the current jar
        Class.forName("org.hsqldb.jdbcDriver");

        // connect to the database.   This will load the db files and start the
        // database if it is not alread running.
        // db_file_name_prefix is used to open or create files that hold the state
        // of the db.
        // It can contain directory names relative to the
        // current working directory
        conn = DriverManager.getConnection("jdbc:hsqldb:"
                                           + db_file_name_prefix,    // filenames
                                           "sa",                     // username
                                           "");                      // password
    }

    public void shutdown() throws SQLException {
     
        Statement st = conn.createStatement();
        st.execute("SHUTDOWN");
        conn.close();
    }

    //use for SQL command SELECT
    public synchronized void query(String expression) throws SQLException {

        Statement st = null;
        ResultSet rs = null;

        st = conn.createStatement();         // statement objects can be reused with

        // repeated calls to execute but we
        // choose to make a new one each time
        rs = st.executeQuery(expression);    // run the query

        // do something with the result set.
        dump(rs);
        st.close();    // NOTE!! if you close a statement the associated ResultSet is

        // closed too
        // so you should copy the contents to some other object.
        // the result set is invalidated also  if you recycle an Statement
        // and try to execute some other query before the result set has been
        // completely examined.
    }
    //use for SQL commands CREATE, DROP, INSERT and UPDATE
    public synchronized void update(String expression) throws SQLException {

        Statement st = null;

        st = conn.createStatement();    // statements

        int i = st.executeUpdate(expression);    // run the query

        if (i == -1) {
            System.out.println("db error : " + expression);
        }

        st.close();
    }    // void update()

    public static void dump(ResultSet rs) throws SQLException {

        // the order of the rows in a cursor
        // are implementation dependent unless you use the SQL ORDER statement
        ResultSetMetaData meta   = rs.getMetaData();
        int               colmax = meta.getColumnCount();
        int               i;
        Object            o = null;

        // the result set is a cursor into the data.  You can only
        // point to one row at a time
        // assume we are pointing to BEFORE the first row
        // rs.next() points to next row and returns true
        // or false if there is no next row, which breaks the loop
        for (; rs.next(); ) {
            for (i = 0; i < colmax; ++i) {
                o = rs.getObject(i + 1);    // Is SQL the first column is indexed

                // with 1 not 0
                System.out.print(o.toString() + " ");
            }

            System.out.println(" ");
        }
    }                                       //void dump( ResultSet rs )

    public static void main(String[] args) {

        DatenbankTest db = null;

        try {
            db = new DatenbankTest("db_file");
        } catch (Exception ex1) {
            ex1.printStackTrace();    // could not start db

            return;                   // bye bye
        }

        try {

            //make an empty table
            //
            // by declaring the id column IDENTITY, the db will automatically
            // generate unique values for new rows- useful for row keys
            db.update(
                "CREATE TABLE sample_table ( id INTEGER IDENTITY, str_col VARCHAR(256), num_col INTEGER)");
        } catch (SQLException ex2) {

            //ignore
            //ex2.printStackTrace();  // second time we run program
            //  should throw execption since table
            // already there
            //
            // this will have no effect on the db
        }

        try {

            // add some rows - will create duplicates if run more then once
            // the id column is automatically generated
            db.update(
                "INSERT INTO sample_table(str_col,num_col) VALUES('Ford', 100)");
            db.update(
                "INSERT INTO sample_table(str_col,num_col) VALUES('Toyota', 200)");
            db.update(
                "INSERT INTO sample_table(str_col,num_col) VALUES('Honda', 300)");
            db.update(
                "INSERT INTO sample_table(str_col,num_col) VALUES('GM', 400)");

            // do a query
            db.query("SELECT * FROM sample_table WHERE num_col < 250");

            // at end of program
            db.shutdown();
        } catch (SQLException ex3) {
            ex3.printStackTrace();
        }
    }    // main()



}

Diesen Code habe ich hier gefunden. Compiliert bekomme ich den. Beim ausführen bekomme ich folgende Fehlermeldung:
Code:
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

Was mache ich falsch?

Noch was anderes: Die Anwender geben die Daten per Formular ein und speichern. Damit stehen die Daten in der DB. Nun sollen die Anwender die DB an mich übersenden. Geht das überhäut mit hsqldb?
 

Brainiac

Bekanntes Mitglied
Steht doch in den Kommentaren ab Zeile 9 was das ist. :(
Sind Treiber/Bestandteile um einen Datenbankserver zu starten und dann zu ihm zu connecten. Wenn du das jar.File nicht hast mußt du es dir besorgen.
 
G

Guest

Gast
Ich habe folgende Ordnerstruktur:

c:\tmp\musicShop

Unter musicShop liegt der Ordner hsqldbr, in diesem Ornder befinded sich der Ordner lib. In diesem Ordner befindet sich die Datei hsqldb.jar.

Dann habe ich mir folgendes Beispiel aus diesem Forum genommen:

Code:
import java.sql.*;

import java.util.logging.*;



public class UseHSQLDB {

   static Logger log = Logger.getLogger("de.myname.UseHSQLDB");



   public static void main(String[] args)

      throws SQLException, ClassNotFoundException { // Doit better ...



   log.log(Level.INFO, "Starting to load JDBCDriver... ");

   Class.forName("org.hsqldb.jdbcDriver");
   

   log.log(Level.INFO, "JDBC Driver successfully loaded!");



   Connection con =

      DriverManager.getConnection( // tmp must exist. Right slash.

         //"jdbc:hsqldb:D:/tmp/musicShop","sa","");
         "jdbc:hsqldb:C:/tmp/musicShop","sa","");

   log.log(Level.INFO, "Connection established!");



   Statement stmt = con.createStatement();

   String sqlQuery =

      "CREATE TABLE cdShop (cdNr INTEGER, cdArtist CHAR(20), cdTitle CHAR(20));";

   ResultSet rs = stmt.executeQuery(sqlQuery);



   sqlQuery = "INSERT INTO cdShop VALUES (1,'Groeni','Mensch')";

   rs = stmt.executeQuery(sqlQuery);

   sqlQuery = "INSERT INTO cdShop VALUES (2,'Sting','Fields of Gold')";

   rs = stmt.executeQuery(sqlQuery);

   sqlQuery = "INSERT INTO cdShop VALUES (3,'Bach','Pluratorium')";

   rs = stmt.executeQuery(sqlQuery);



   sqlQuery = "UPDATE cdShop SET cdTitle='W-Oratorium' WHERE cdNr=1";

   rs = stmt.executeQuery(sqlQuery);



   sqlQuery = "SELECT * FROM cdShop";

   rs = stmt.executeQuery(sqlQuery);

   System.out.println("\n\n\nCD Shop DB\n=============\n");

   int counter = 0;

   while (rs.next()) {

      System.out.println(counter++ +".Datensatz:");

      int cdNr = rs.getInt("cdNr");

      System.out.println("\t[cdNr ->" + cdNr + "]");

      String cdArtist = rs.getString("cdArtist");

      System.out.println("\t[cdArtist ->" + cdArtist + "]");

      String cdTitle = rs.getString("cdTitle");

      System.out.println("\t[cdTitle ->" + cdTitle + "]\n");

   }

   con.close();

   }
   }

Code-mässig klar, erst Treiber laden, dann Connection aufbauen. Das ist verständlich, sonst kann ich nicht arbeiten. Ich bekomme aber die Fehlermeldung, dass die Klasse org.hsqldb.jdbcDriver nicht gefunden werden kann. D. h. er kann den Treiber beim Laden nicht finden. Brauche ich da eine bestimmte Ordnerstruktur oder muss ich das jar-File in die classpath-Variable laden?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Java Applikation von einem Browser steuern Allgemeine Java-Themen 8
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
L Java Applikation Web Anbindung Allgemeine Java-Themen 2
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
B Applikation ohne (direkt)Java installiert zu haben auszuführen Allgemeine Java-Themen 8
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
P Java Applikation mit Webinterface Allgemeine Java-Themen 1
J java-applikation-1.jar soll java-applikation-2 aufrufen.jar Allgemeine Java-Themen 5
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
S Perfomance Problem mit Java Applikation Allgemeine Java-Themen 4
MrGe Java-Applikation und OpenOffice/UNO Allgemeine Java-Themen 2
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
C Java Applikation Benutzerkontrolle Allgemeine Java-Themen 3
S Java Webstart Applikation in den Autostart? Allgemeine Java-Themen 3
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
O Applikation über java steuern Allgemeine Java-Themen 11
M Beenden einer externen Java-Applikation Allgemeine Java-Themen 11
H Php Script aus Java Applikation starten Allgemeine Java-Themen 2
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
A Setup von einer Java-Applikation starten Allgemeine Java-Themen 4
B Java Applikation incl. dll unter Linux ausführen? Allgemeine Java-Themen 11
mabu MediaCenter Applikation in Java realistisch oder nicht? Allgemeine Java-Themen 11
E NT-Anmeldung in Java Client-Applikation nutzen. JAAS ? Allgemeine Java-Themen 5
D Startverhalten Java-Applikation Allgemeine Java-Themen 7
D Plattformunabhängiges ausführbare Java-Applikation ohne jar Allgemeine Java-Themen 5
G überpüfen ob bereits instanz von java applikation läuft Allgemeine Java-Themen 4
L Ressourcen Java Applikation Allgemeine Java-Themen 4
D Name der Java-Applikation Allgemeine Java-Themen 2
G Java Applikation stürzt ab :!: Allgemeine Java-Themen 5
M Java Applikation Slideshow Allgemeine Java-Themen 13
C Java Applikation - Schrift . (formatieren, effekte) Allgemeine Java-Themen 4
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
G idee für java applikation Allgemeine Java-Themen 3
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
thE_29 Java Applikation ohne grafische Oberfläche Allgemeine Java-Themen 24
L Java Applikation über Netzwerk starten Allgemeine Java-Themen 8
X Applikation Java Web Start fähig machen Allgemeine Java-Themen 4
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 0
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben