*.java Datei nach Doppelklick mit VM ausführen

comiplo

Mitglied
Hallo,

Ich habe weder über Google unbrauchbare Ergebnisse gefunden, sowie auch über die Board SuFu nichts. Ich hoffe mal das Präfix ist richtig, mir fiel kein besseres ein ...

Mein Problem ist, dass ich gerne eine *.java Datei nach einem Doppelklick öffnen möchte. Also nachdem ich zweimal drauf geklickt habe, soll sich die VM öffnen und mir den Inhalt abspielen.

Meine Frage: Wie mache ich das und welchen Dateityp muss die Java-Datei haben?

Meine Entwicklungsumgebung ist Eclipse.

MfG,
comiplo
 
Das geht nicht. Die java Datei muss erst noch kompiliert werden. Dann hast du eine class Datei. Aber auch die kann man nicht so ohne weiteres per Doppelklick ausführen. Das geht mit einem Jar wenn das Filehandle im BEtriebssystem richtig registriert ist. Dazu dein Projekt in Eclipse als "Runable Jar" exportieren.
 
Hallo

Danke schon mal für die schnelle Antwort.

Leider gibt es ein Problem:
Als erstes rechtsklicke ich auf mein *.java File, dann wähle ich "Export ..." aus. Dann "Runnable JAR File" und "Next". Dann den Speicherort, aber bei "Launch configuration" steht nichts drinnen. Auch durch einen Klick auf den Pfeil daneben kann ich nichts auswählen. So kann ich weder "Next" noch "Finish" drücken. Was ist da das Problem?

MfG,
comiplo
 
Du musst eine Launch Configuration anlegen. Eclipse tut dies automatisch, wenn du das Programm das erste Mal in der IDE startest. Anschließend ist die Konfiguration im Export-Dialog verfügbar.
 
Nur um sicher zu gehn:

Du musst eine Launch Configuration anlegen. Eclipse tut dies automatisch, wenn du das Programm das erste Mal in der IDE startest.

Was natürlich voraussetzt dass du in der Klasse oder in einer Klasse in deinem Projekt auch eine Main Methode hast...

Java:
public static void main(String[] args)
 
Dann einfach in Eclipse dein Programm starten. Dann wird nach der Klasse mit der main Methode gesucht und eine Launch Config angelegt.

In Eclipse starten mit "Run" -> "Run As" -> "Java App"
 
Hallo

Danke mal, allerdings hab ich noch ein Problem. Wenn ich versuche, die *.jar zu öffnen, kommt das:

yk9obl9u.png


Dateiname: Klasse2.jar

Paketname: Paket2

Code:
Java:
package Paket2;

public class Klasse2 {

	public static void main(String[] args) {
		System.out.println("Hallo wer bist du");
	}
}

Was ist nun wieder falsch?

MfG,
comiplo
 
Er such die Klasse2 diese giebt es aber nicht da sie ja in einem Package steck. hast du im Jar auch die korrekte Ordnerstruktur?

und du musst bei exportiern natürlcih den Paketnamen auch mitangeben
 
Was das mit dem Löschen und Umbenennen soll habe ich jetzt nicht verstanden.
Hast Du mal versucht das jar via Konsole zu starten?
Code:
java -jar deinArchiv.jar
Aufgrund der Fehlermeldung würde ich aber vermuten, dass der Eintrag in der Manifestdatei fehlerhaft ist, denn Deine Klasse heisst nicht Klasse2 sondern Paket2.Klasse2

Wobei in Deinem Fall, wenn es funktioniert gar nicht zu sehen sein sollte, da Executable jars i.d.R mit javaw gestartet werden, und die Konsole (also das System.out.print...) nicht angezeigt wird.
 
Ich behaupte mal einfach das du das Projekt falsch exportierst und die Launch Konfiguration fehlerhaft ist.

Was passiert wenn du dein Projekt in Eclipse startest? "Run" -> "Run As" -> "Java App"
 
@Michael...

Hab ich da was falsch verstanden? Als die Datei noch ne *.java war, musste sie immer gleich heißen, wie die class. Da aber meine class nicht "Klasse2.r" heißt und eine Klasse2.java schon existiert, muss ich das machen ...

Wobei in Deinem Fall, wenn es funktioniert gar nicht zu sehen sein sollte, da Executable jars i.d.R mit javaw gestartet werden, und die Konsole (also das System.out.print...) nicht angezeigt wird.
Äh... und wie kann ich das ändern?

@fassy
Es passiert das:
java.lang.NoClassDefFoundError: Paket2/Klasse2
Caused by: java.lang.ClassNotFoundException: Paket2.Klasse2
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)
 
Hab ich da was falsch verstanden? Als die Datei noch ne *.java war, musste sie immer gleich heißen, wie die class. Da aber meine class nicht "Klasse2.r" heißt und eine Klasse2.java schon existiert, muss ich das machen ...
Verstehe nicht was Du meinst
- eine .java Datei muss so heißen wie die darin definierte Klasse - korrekt.
- wenn die .java Datei Bestandteil eines packages ist, muss Sie in einem Verzeichnis liegen, das genauso heißt wie der package-Name. Das daraus erzeugte class-File bzw. die kompilierte Klasse wird dann über packageName.KlassenName identifiziert.
- das jar-File kann heißen wie es will.
Äh... und wie kann ich das ändern?
javaw startet die VM ohne Konsole, d.h. ein System.out. bleibt für den Anwender unsichtbar. Einzig GUI Komponenten werden angezeigt.
Wenn Du jar-Files die keine GUI enthalten per Doppelklick inkl. der Konsole starten willst, dann musst die Dateiverknüpfung für .jar Dateien auf java -jar meinArchiv.jar ändern. (Nehme an Du verwendest Windows --> java -jar "%1")

Ansonsten sollte das jar einfach aus Eclipse zur exportieren sein.

Rechtsklick auf die Klasse oder das Projekt --> Export... --> "JAR file" auswählen --> Next --> das Exportverzeichnis auswählen --> Next --> Next --> Main class per Browse auswählen --> Finish
 
@fassy
Es passiert das:

java.lang.NoClassDefFoundError: Paket2/Klasse2
Caused by: java.lang.ClassNotFoundException: Paket2.Klasse2
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)

Dann ist bei dir schon das Projekt an für sich kaputt. Mach dochmal einen Screenshot von deinem Eclipse bitte... So wird das nichts.
 
@Michael...

Okay, ich wusste nicht, dass eine *.jar Datei heißen kann, wie sie will. thx

Muss das in ner Batch sein? Gibt es dazu ein Beispiel?

@fassy

Ich weiß, dass mein Projekt fehlerhaft ist, aber irgendwie finde ich nichts - wie die Fehlersuche in Eclipse.

Screenshot:
 
Zuletzt bearbeitet von einem Moderator:
Eieiei... Das ist so einiges nicht wie es sein sollte 😉

Ich hab dir mal ein Beispiel für ein laufendes Projekt zusammengestellt. Importier das in dein Eclipse Workspace und probier es noch mal mit dem Export...
 
Dankeschön. Auch an alle, für die viele Geduld. Ich weiß, ich hab viele Probleme mit Java. 🙂

@fassy
Wäre natürlich zu schön um wahr zu sein:
Eclipse kann die neue Datei nirgends zuordnen. D.h. es wird in dieser linken Spalte nicht angezeigt und somit kann ich es auch nicht zum exportieren auswählen ;(

Was tun?

MfG,
comiplo
 
Das ist ein zip File. In Eclipse "File" -> "Import" -> "General" -> "Existing Project" -> "Select Archive File" -> "Finish".

Dann legt er dir das Projekt an wie ich es hatte.
 
Wenn ich da draufklicke, passiert nichts ...

Muss ich da was bei diesem ANT Script machen? Also ein Häkchen?

Damit ihr euch das vorstellen, könnt, hab ich die Datei mal angehängt ...

MfG,
comiplo
 
Hey,

du hast eine Konsolenanwendung geschrieben. Die kannst du nicht einfach doppelklicken, ausser du schreibst ein Skript, dass eine Shell (Eingabeaufforderung) startet und z.b. java -jar Desktop/Projektfassy.jar startet. Dann erscheint eine Shell die "Hallo Welt ausgibt".
 
Hi

Ja, nun schreibt das DOS-Fenster Hallo Welt rein.

Gibt es auch eine Möglichkeit, dies mit der VM (siehe Titel) zu öffnen?

Beispiel: Shoddy Battle (Achtung, Downloadlink!)

Anmerkung:
Das ist nur ein Beispiel wie ich meine Java-Datei gerne öffnen möchte. Der Inhalt der Datei hat nichts mit meinem Ziel zu tun.

MfG,
comiplo
 
Deine Beispiel Datei ist eine .jlnp, mit grafischen Elementen.

Es gibt einige Compiler, die dir aus deinem Sourcecode eine .exe compilieren, die dann per Doppelklick ausführbar sind. Vorausgesetzt, wir sprechen von Windows. Dies ist aber mMn. nicht sinnvoll, da du eine Konsolenanwendung geschrieben hast. Via Google findest du a) Informationen über den .exe Compiler und b) über die Möglichkeit deine Konsole via Batch Datei mit einem Doppelklick zu öffnen. Ich denke, b) wäre sinnvoller in deiner Situation.
 
Dankeschön. Ja, ich wollte ja googlen, aber ich wusste nicht wie man das nennt.

Funktioniert eine davon auch auf Linux, Macintosh, usw. ?
Gibt es Konverter für eine JNLP Dateien, oder muss die *.java einen anderen Code haben?

MfG,
comiplo
 
Hab keine Ahnung von .jlnp, aber ganz so einfach wird das nicht funktionieren.

Eine EXE funktioniert nur unter Windows. Für andere Betriebssysteme müsste man dann wieder einen anderen Compiler suchen, der daraus (pseudo?)nativen Code macht. Eine Shell gibt es unter jedem Betriebssystem, allerdings mit verschiedenen Befehlen und Syntax. D.h. dort müsstest du für jedes Betriebssystem ein eigenes Skript schreiben, was aber auch nicht so sonderlich schwer ist. Unter Windows wäre das eine .bat (batch-datei).

Falls ich Mist erzähle, berichtige mich jemand, aber so ungefähr haut das schon hin. Flexibilität hat eben auch seinen Preis.
 
Okay, ich frage dann mal im entsprechenden Unterforum. Das hat damit ja nichts mehr zu tun.

Dankeschön an alle für ihre Hilfe 🙂

MfG,
comiplo
 

Zurück
Oben