Datei öffnen mit . jar

Dieses Thema Datei öffnen mit . jar im Forum "Allgemeine Java-Themen" wurde erstellt von The_S, 25. Nov. 2006.

Status des Themas:
Es sind keine weiteren Antworten möglich.

Thema: Datei öffnen mit . jar Hi, ist es möglich unter Windows einzustellen, dass ein bestimmter Datentyp immer mit einer bestimmten JAR...

  1. Hi,

    ist es möglich unter Windows einzustellen, dass ein bestimmter Datentyp immer mit einer bestimmten JAR geöffnet werden soll (ich denke mal, die Datei wird als Parameter übegeben!?)? Wenn ich das über den "Öffnen Mit" Dialog versuche bekomm ich die Meldung, dass die zu öffnende Datei keine gültige Win32 Anwendung ist. Ich denke mal das liegt daran, dass Windows eine JAR nicht als Programm ansieht und ich das JAR-File als Anwendung auch nur auswählen kann, wenn ich den Filter von "Programme" auf "Alle Dateien" ändere.

    danke!
     
  2. Schau mal hier --> (hier klicken!)
    Dort wirst du fündig!
  3. Bau dir einfach ne bat oder ne exe die die jar startet.
    Und die gibst du dann bei "öffnen mit ..." an.
     
  4. hast du es schon mit den Windows-Verknüpfungen probiert?
    Verknüpfung auf 'java -jar ..', öffnen mit Verknüpfung?
     
  5. @stevg wie stell ichs bei ner bat an, dass die übergebenen Parameter an den Aufruf mit übergeben werden?

    @SlaterB hatte ich nicht, aber bei einem Versuch kommt die selbe Meldung :(
     
  6. %1 oder $1 oder so ähnlich. die Anzahl bekommst bestimmt auch irgendwie raus. Frag mal google :###
     
  7. Danke, das schaut doch schonmal gut aus. Werds mir bei Gelgenheit mal anschauen :)
     
  8. Zu dem Ergebnis auf dem Screenshot http://home.arcor.de/sidiousx/filetype.jpg

    kommt man per JDIC mit folgendem Code (nur Windows ;)):
    Code (Text):
    AssociationService as = new AssociationService();
                File startbat = new File ("JMind.bat");
                BufferedWriter bw = new BufferedWriter (new FileWriter (startbat));
                File chosen = new File (System.getProperty("user.dir"));
                bw.write("@echo off");
                bw.newLine();
                bw.write(chosen.getAbsolutePath().substring(0, 2));
                bw.newLine();
                bw.write("cd " + chosen.getAbsolutePath());
                bw.newLine();
                String javahome = System.getProperty("java.home", "");
                String filesep = File.separator;
                bw.write ("START " + javahome + filesep + "bin" + filesep + "javaw.exe -jar jMindMap3D.jar " + ((args.length != 0 && args[0].equals("-debug")) ? "-debug" : "") + "%1");
                bw.close();
                Association jm3 = new Association ();
                jm3.addFileExtension ("jm3");
                org.jdesktop.jdic.filetypes.Action jm3Action = new org.jdesktop.jdic.filetypes.Action ("open", startbat.getAbsolutePath() + " \"%1\"", "Open jMindMap3D");
                jm3.addAction (jm3Action);
                InputStream is = ClassLoader.getSystemResourceAsStream("icon.ico");
                OutputStream os = new FileOutputStream ("jMindMapIcon.ico");
                byte[] buf = new byte[512];
                int len;
                while ((len = is.read(buf)) >= 0){
                    os.write(buf, 0, len);
                }
                is.close();
                os.close();
                jm3.setIconFileName (new File ("jMindMapIcon.ico").getAbsolutePath());
                as.registerSystemAssociation (jm3);
     
     
  9. Oder aber auch!

    Explorer öffnen!

    Extras->Ordneroptionen->Dateitypen

    Gewünschten Dateityp auswählen oder neu erstellen!

    Dann auf Erweitert!

    Dort Neu und Namen geben für Aktion (Öffnen als bsp)

    Als Programm zB das eingeben:

    C:\Programme\Java\jdk1.5.0_06\jre\bin\java.exe -jar C:\Programm.jar %1


    Natürlich müssen die Pfade angepasst werden, aber so geht das!
     
  10. @thE_29 Das erscheint mir als beste und einfachste Möglichkeit. Werd ich daheim gleich mal ausprobieren :) danke!
     
  11. Ich schreibe dir gerade ne nette Funktion ;)

    brb!
     
  12. Code (Text):
        /****************************************************************************************************************************
         * Methode registriert eine Dateiendung mit einem java programm
         * Also die Dateiendung ruft implizit eine .jar Datei auf mit der eigentlichen Datei als 1ten Übergabeparameter
         * @param file_end_suffix String Dateindung von dem neuen Typen (ohne .)
         * @param path_to_java_program String Java Programm das via java -jar programm.jar aufgerufen wird
         * @param optional_icon String optionales Bild was bei der neuen Dateiendung gesetzt werden kann
         * ACHTUNG Damit das Bild angezeigt wird, muss entweder der PC neugestartet werden oder der explorer neu gestartet werden
         * @throws FileNotFoundException wenn der Java Interpreter nicht gefunden wurde, das jar File oder das Icon (wenn nicht null)
         ***************************************************************************************************************************/
        public static void registerJavaProgram(String file_end_suffix, String path_to_java_program, String optional_icon) throws FileNotFoundException
        {
          if(file_end_suffix == null)
            throw new NullPointerException("Suffix cannot be null");
          if(file_end_suffix.startsWith("."))
            throw new IllegalArgumentException("Suffix has to be declared without leading point (for example: xyz and not .xyz)\nYours: " + file_end_suffix);
          if(path_to_java_program == null)
            throw new NullPointerException("Java program cannot be null");
          if(!path_to_java_program.endsWith(".jar"))
            throw new IllegalArgumentException("Java programm must be a jar file: " + path_to_java_program);
          if(!new File(path_to_java_program).exists())
            throw new FileNotFoundException("Java programm cannot be found at: " + path_to_java_program);
          if(optional_icon != null && !new File(optional_icon).exists())
            throw new FileNotFoundException("Icon cannot be found at: " + optional_icon);
          String _home = System.getProperty("java.home");
          if(!_home.endsWith(File.separator))
            _home = _home.concat(File.separator); //hängt einen backslash hinten dazu
          _home = _home.concat("bin" + File.separator + "java.exe"); //hier javaw.exe reinschreiben, wenn die gewünscht ist
          if(!new File(_home).exists())
            throw new FileNotFoundException("java interpreter not found at: " + _home);
          String HCR = "[HKEY_CLASSES_ROOT\\.";
          //dadurch das replaceAll mit regex arbeitet und einmal \\ == \ im string müssen wir \\\\ für 2 \\ das regex kapiert, das ich einen backslash meine
          _home = _home.replaceAll("\\\\","\\\\\\\\"); //alle \ gehören durch doppelte \\ ersetzt
          path_to_java_program = path_to_java_program.replaceAll("\\\\","\\\\\\\\");
          if(optional_icon != null)
            optional_icon = optional_icon.replaceAll("\\\\","\\\\\\\\"); //auch hier alle Backslashes durch doppelte ersetzen
          try{
            File exFile = File.createTempFile("progregister",".tmp");
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(exFile)));
            bw.write("Windows Registry Editor Version 5.00");
            bw.newLine();
            bw.newLine();
            bw.write(new StringBuffer(HCR).append(file_end_suffix).append("]").toString());
            bw.newLine();
            bw.newLine();
            bw.write(new StringBuffer(HCR).append(file_end_suffix).append("\\Shell]").toString());
            bw.newLine();
            bw.newLine();
            bw.write(new StringBuffer(HCR).append(file_end_suffix).append("\\Shell\\Open]").toString());
            bw.newLine();
            bw.newLine();
            bw.write(new StringBuffer(HCR).append(file_end_suffix).append("\\Shell\\Open\\Command]").toString());        
            bw.newLine();
            bw.write(new StringBuffer("@=\"").append(_home).append(" -jar ").append(path_to_java_program).append(" %1 \"").toString());
            if(optional_icon != null)
            {
              bw.newLine();
              bw.newLine();
              bw.write(new StringBuffer(HCR).append(file_end_suffix).append("\\DefaultIcon]").toString());
              bw.newLine();
              bw.write(new StringBuffer("@=\"").append(optional_icon).append("\"").toString());
            }
            bw.flush();
            bw.close(); //schließt das File
            Runtime.getRuntime().exec("regedit /s " + exFile.getAbsolutePath()).waitFor(); //speichert den Eintrag in der registry
            if(!exFile.delete())
              exFile.deleteOnExit();
          }
          catch(Exception ex)
          {
            ex.printStackTrace();
          }
        }
    Problem gibts nur beim Icon..

    Man muss irgendwie den Explorer refreshen, aber wie das geht ohne das ich ihn abwürge weiß ich nicht...
     
  13. Nicht schlecht ... Eigentlich sogar absolut genial :D . Herzlichen Dank, werds daheim gleich mal ausprobieren. Mit welcher Windows-Version hast du das getestet?

    Theoretisch liese sich auf diesem Weg zumindest unter Windows ein Starter-File MIT Icon (und sehr kryptischer Dateiendung, aber immerhin) generieren ...
     
  14. Habs mit WindowsXP getestet! Kanns aber auch unter Win2k testen!

    Sollte IMHO gleich sein, außer das vielleicht Windows Registry Editor Version 5.00 hier ein 4.00 gehört!

    Oder war das NT? (Fragen über Fragen)

    Mache sowas schon seit Jahren so und klappt immer so ;) Man glaubt gar net alles was man in der registry alles rumstellen kann!
    (Man sollte aber net rumpfuschen wenn man net weiß, was man tut)

    ;)


    PS.: wenn du die java Box net haben willst, musst halt javaw.exe statt java.exe bei _home dazuhängen!
     
  15. teste mal bitte unter Windows 2000 wenn du Zeit hast. Da kann ich das nämlich leider nicht testen. Danke. Frühere Versionen benötige ich nicht.

    Deswegen lass ich die Finger von der Registry ;)
     
  16. Hm, kann man auch irgendwie definieren, dass n-Parameter mit übergeben werden können?
     
  17. Also, es läuft auch unter Win2k!

    Wie welche Parameter?!
     
  18. Wenn ich mehrere Dateien gleichzeitig übergeben möchte bzw öffne. Z. B. mehrere Bilder. Oder geht das schon? Dieser Satz macht mich nur ein bisschen stutzig

    ...
     
  19. Ahaa.... Also wenn du 10 Files aufeinmal aufmachst?

    Da wird leider jedes mal das aufgerufen!

    Das etwas nur 1mal aufgemacht wird, wenn man 10 Dinger aufeinmal anklickt ist vom Programm so geregelt!

    Mach mal 10 jar Dateien auf.. Werden auch alle geöffnet und net nur 1 JVM!
     
  20. Hm ok. Dann müsste ich mir da Programm-Seitig was überlegen. Werd schon ne Möglichkeit irgendwie finden (hoff ich ;) ).

    Aber aufjedenfall nochmal n großes Danke :toll:
     
  21. Hm, irgendwie will das nicht so ganz ... mein Aufruf schaut so aus

    Code (Text):
            try {
                registerJavaProgram("SCP", "D:\\SoundController\\SoundController.jar", "D:\\SoundController\\Player2.gif");
            }
            catch (Exception e) {
                e.printStackTrace();
            }
    Beim Doppelklick auf eine .scp Datei erhalte ich folgende Fehlermeldung

    Die Klasse die beim Aufrufen des Jar-Files aufgerufen wird sieht so aus

    Code (Text):
    public class StartUp {
       
        public static void main(String[] args) {
           
            SoundController sc = new SoundController();
            sc.loadApplication(args.length < 1);
            if (args.length > 0) {
                if (args[0].toUpperCase().endsWith(".SCP")) {
                    sc.notifyModel(new ViewChangedEvent(null, args[0], MySoundConstants.LOAD_PLAYLIST));
                }
            }
        }
    }
    Windows Version ist

    Woran könnte das liegen? Danke!
     
  22. Gehe mal in die registry (start->ausführen->regedit)

    Und zu dem Eintrag
    HKEY_CLASSES_ROOT\.SCP und kopier mal alles was da steht!

    + Unterverzeichnisse oder mach einen Screenshot wenn alles aufgeklappt ist + dem Command Tree (defaulticon is net so wichtig)

    Hat es den das Icon?

    Und wo kommt der Fehler? Ist das von java oder windows?
     
  23. Direkt unter .SCP

    Standard, REG_SZ, ft000001

    Unter Default Icon

    Standard, REG_SZ, D:\SoundController\Player2.gif

    Unter Shell => Open => Command (Die Schlüssel in Shell und Open sind die Werte nicht gesetzt)

    Standard, REG_SZ, C:\Programme\Java\jre1.5.0_08\bin\java.exe -jar D:\SoundController\SoundController.jar %1

    Das Icon wird auch nicht angezeigt, wobei könnt daran liegen, dass ich ein gif zugewiesen hab :oops:

    Der Fehler sollte Java-basiert sein.
     
  24. Du hast diese Endung schonmal unterm Explorer eingetragen!

    Der Standard Eintrag darf auch nichts zeigen (rechtsklick schlüssel löschen)

    Bei dir zeigt der auf ft00001, was (wenn du in der registry suchst) du sicher finden wirst!
     
  25. OK, danke. Das heißt also ich schmeiß den Schlüssel raus und versuch dann das ganze nochmal!?
     
  26. Genau!
    Kannst du es jetzt nicht ausprobieren?

    Nur zu Testzwecken?
     
  27. Ne, erst wieder daheim. Ich hab hier keinen Zugriff auf Arbeit keinen Zugriff auf die Registry :cry: . Ich meld mich aber heute Abend nochmal.
     
  28. So, hab jetzt den kompletten Schlüssel inkl. allen Unterschlüsseln rausgelöscht, und nochmal das Selbe wie oben schon gemacht. Jetzt steht das Selbe drin wie letztes mal, nur dass direkt unter .SCP kein Wert mehr gesetzt ist. Blöderweiße öffnet sich jetzt beim Doppelklick auf eine solche .SCP Datei der ganz normale "Öffnen mit" Dialog von Windows :cry:
     
  29. Hö?!

    Also wie gesagt, bei mir klappt das unter Win2k und WinXP!

    Probier mal ne andere Endung...
     
  30. k, werds heute Abend ausprobieren :)
     
  31. Okay, mit ner anderen Endung gehts. Ich frag mich nur warum. Hast du ne Erklärung dafür?

    Kann man noch irgendwie einstellen, dass die Endung auch mitübergeben werden kann? Weil mein prog kann mit mehreren Dateitypen umgehen und so müsste ich erst die Datei analysieren um welchen Typ es sich handeld.

    Danke!

    [edit] Und wie muss ich vorgehen, wenn die Dateiendung bereits einem anderen Programm zugewiesen ist? Z. B. mp3 oder jpg ... ?
     
  32. Wie, welche Endung soll mitübergeben werden?!

    Naja, du müsstest nur den Reg Schlüssel löschen...

    Man kann irgendwie via regedit /e was rauskriegen, ob man was löschen kann, weiß ich nicht...

    Sonst müsstest du zu einer registry API greifen! (Obwohl die java.dll das genauso kann, nur sun hat das so hingebaut, das man es net nutzen kann!!)
     
  33. Wenn ich auf ne Datei klicke, die über die Registry mit meinem Programm verknüpft ist, dann bekomm ich nur den Pfad inkl. Datei aber ohne Dateiendung an mein Programm übergeben (warum auch immer). Klar könnt ich ein File erstellen, in dem ich einfach mal alle möglichen Dateiendungen die von meinem Programm unterstützt werden dranhängen und dann über die exists() Methode überprüfen ob diese Datei gemeint ist, aber das ist ja fehleranfällig. Deswegen wäre es super, wenn ich auch irgendwie einstellen könnte, dass auch die Dateiendung mitübergeben wird.

    Sicher? Weil manuelles löschen meines .SCP - Schlüssel hats ja nicht wirklich gebracht ...

    Mal schauen ob ich was im Internet finde :)

    Kann ich mich auch mal informieren :) . Kannste mir ne gute empfehlen?

    Das is ma wieder logik ... :roll:
     
  34. Also ich kriege es mit Endung...

    Habe mir ein Programm geschrieben mit Endung xyz und ich lasse args[0] in nem OptionPane anzeigen und da steht dann C:\bla.xyz

    Warum das bei deinem SCP nicht geklappt hat, kann ich von hier net sagen...

    Ich habe eine API wo eine dll dabei ist, die sich JRegistryKey.dll nennt!
    Such mal im google danach..
     
  35. Ist ja alles sehr merkwürdig ... ich glaub is besser wenn ich mir mal die API anschaue ;) . Aber nochmal Danke!
     
  36. Hier, die Java.dll registry Befehle ;)

    _Java_java_util_prefs_WindowsPreferences_WindowsRegCloseKey@12
    _Java_java_util_prefs_WindowsPreferences_WindowsRegCreateKeyEx@16
    _Java_java_util_prefs_WindowsPreferences_WindowsRegDeleteKey@16
    _Java_java_util_prefs_WindowsPreferences_WindowsRegDeleteValue@16
    _Java_java_util_prefs_WindowsPreferences_WindowsRegEnumKeyEx@20
    _Java_java_util_prefs_WindowsPreferences_WindowsRegEnumValue@20
    _Java_java_util_prefs_WindowsPreferences_WindowsRegFlushKey@12
    _Java_java_util_prefs_WindowsPreferences_WindowsRegOpenKey@20
    _Java_java_util_prefs_WindowsPreferences_WindowsRegQueryInfoKey@12
    _Java_java_util_prefs_WindowsPreferences_WindowsRegQueryValueEx@16
    _Java_java_util_prefs_WindowsPreferences_WindowsRegSetValueEx@20


    Ach, wie fein wenn man die nutzen könnte!
    Ich geh mal schaun, ob das irgendwie geht...
     
  37. So, ich baue gerade eine registry API auf Basis der java.dll!

    Öffnen und schließen geht schonmal ;)
     
  38. WOW! Echt Klasse :D
     
  39. So, ist eigentlich schon fertig, nur geht von Java aus nur die Schlüsselwerte lesen...

    Naja, man kann net alles haben..

    Bin aber gerade dabei, das ganze in Sourceforge reinzuhauen, finde aber keine passende Lizenz, die zwar meinen Source zu Verfügung stellt, aber man den Source nicht manipulieren/ändern oder in einem Produkt verwenden darf!

    Stelle das ganze ja als jar (sprich Library) zur Verfügung!
     
  40. Heißt jetzt für mein Prob ( :arrow: *n00b am steur* ;) )?
     
  41. Also, das was du brauchst, etc geht mit dem dann!

    Ich warte nur noch auf die Bestätigung von Sourceforge, dann kann ichs uppen!
     
  42. Ah, sehr schön :D . Herzlichen dank :toll:
     
  43. Braucht Sourceforge so lang, oder haste mich vergessen ;) ?
     
  44. Tjo, da is noch immer nix zurückgekommen.... :/

    Hoffe das heute was kommt.
     
  45. Ausgezeichnet :D . Gibts dazu auch ne Doku? Ansonsten wühl ich mich einfach ma schnell daheim durch den Source-Code ;)
     
  46. Im Source gibts die Doku ;)

    Also ich habs net extrahieren lassen! War zufaul und habe zZ Streß bei anderen Sachen!

    Will die Doku ja auch auf Englisch bringen!
     
  47. OK, danke. Ich schaus mir dann frühestens heute Abend mal an. Sollten dazu noch Fragen bestehen meld ich mich einfach :) .
     
  48. Kostenlose Java-Grundlagen DVD im Wert von 29,95 € heute kostenlos sichern (Klick)
Die Seite wird geladen...

Datei öffnen mit . jar - Ähnliche Themen

Forum Datum
Batch datei öffnen und als Admin ausführen Allgemeine Java-Themen 14. Juli 2016
Datei öffnen mit eigener Applikation.exe Allgemeine Java-Themen 23. Juni 2016
Datei mit Wildcard öffnen Java Basics - Anfänger-Themen 6. Juni 2016
JAR-Datei öffnen Java Basics - Anfänger-Themen 3. März 2016
eclipse runnablejar Datei fehler bei öffnen Java Basics - Anfänger-Themen 1. März 2016
Status des Themas:
Es sind keine weiteren Antworten möglich.
Interessante Stellenangebote


Weitere Stellenanzeigen

Stellenanzeige Mediadaten