Frage zu getContent()

theuserbl

Bekanntes Mitglied
Angenommen ich habe ein Programm namens "Program.java", das eine Datei "Program.class" erzeugt.

Im Programm steht folgende Zeile (*):
System.out.println( getClass().getResource("Program.class").getContent() );

Dann erscheint als Ausgabe, wenn ich die Datei ganz normal über die Komandozeile mit "java Program" starte folgendes:
java.io.BufferedInputStream@8b2fd8f

Packe ich das Programm in eine Ausführbare Jar-Datei und starte es dann ("java -jar Program.jar") , erscheint:
sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@7f5f5897

Stelle ich nun diese Datei ins Internet und schreibe eine jnlp-Datei dafür, um sie per Wesbstart zu starten, dann erscheint wenn ich sie mit Webstart gestartet habe:
java.util.zip.ZipFile$ZipFileInflaterInputStream@4903b602


Wieso sind die Ausgaben so unterschiedlich?
Ich kann es auch immer wiederholen und außer der Zahl hinter dem @-Zeichen ist es auch immer wieder die selbe Ausgabe, je nachdem wie ich das Programm gestartet habe.

Grüße
theuserbl

(*) Zur Vereinfachung habe ich hier nun System.out.println() geschrieben. Im eiegentlichen Programm habe ich es über ein grafisches Fenster ausgeben lassen, um auch bei Webstart etwas zu sehen. Aber das ändert nichts an der Situation.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Mit getClass().getResource("") bekommst Du eine URL, die auf "irgendwas" zeigt. Das irgenwas ist ein InputStream, über den Du Dir die Daten in Dein Programm reinholen kannst (mit den read-Methoden). Was Du siehst ist die jeweilige Subklasse von InputStream, die davon abhängt, wie die Resource erreicht wird. Du hast wahrscheinlich erwartet, bei getContent() schon die fertige Resource zu bekommen und wunderst Dich deswegen. Das bekommst Du aber wie gesagt erst durch einlesen des InputStreams.
 
Zuletzt bearbeitet von einem Moderator:

faetzminator

Gesperrter Benutzer
1. Fall: Die Datei muss von einer Festplatte gelesen werden, [c]BufferedInputStream[/c] eignet sich dafür sehr.
2. Fall & 3. Fall: Die Datei befindet sich in einem Jar. ein Jar ist nichts anderes als ein gewöhnliches ZIP. Dafür wird dementsprechend ein Stream für ein JAR bzw. ZIP geöffnet.
 

theuserbl

Bekanntes Mitglied
Ok, danke für Eure schnelle Antwort.
Wobei ich mich trotzdem dann zumindest noch wunder, daß es den Unterschied zwischen lokalem Jar und den per Webstart gibt.

@nillehammer:
> Du hast wahrscheinlich erwartet, bei getContent() schon die fertige Resource zu bekommen und wunderst Dich deswegen.

Ne, die habe ich mir schon per
getClass().getResource("Program.class").openStream();
geholt.

Aber nun möchte ich in meiner Jar-Datei alle Dateien in einem speziellen Unterverzeichnis wissen. Und daher muß ich nun wissen, wie meine Jar-Datei heißt, wo sie sich befindet und so.
Und halt eine entsprechende Abrage, falls ich die Datei aufrufe, wo sie gerade nicht im Jar ist und alle Dateien entpackt sind.

Grüße
theuserbl
 

theuserbl

Bekanntes Mitglied
Oder um das genaue Ziel noch besser zu beschreiben:

Statt eine ausführabre Jar zu haben und Resource-Dateien, Konfiguartions-Dateien und so alle seperat nebenbei zu haben, hätte ich gerne NUR eine Jar-Datei.
Und dann wird auf alle näötigen Daten in der Jar zugegriffen. Bei Konfigurationsdateien dann auch in die Jar geschrieben, wenn es geht.
 
G

Gast2

Gast
Bei Konfigurationsdateien dann auch in die Jar geschrieben, wenn es geht.
Du kannst nicht in eine Datei schreiben die grad ausgeführt wird.
Konfigurationsdateien sollten also nicht direkt ins jar file rein. Pack die lieber ins user.home
 
N

nillehammer

Gast
Und dann wird auf alle näötigen Daten in der Jar zugegriffen.
Klar, das geht. Wenn Du den Pfad zur Resource im jar kennst überhaupt kein Problem. Geht sogar, wenn Deine Anwendung andere jars geladen hat. Mit dem richtigen Pfad kannst Du auch Resourcen aus diesen jars laden.
Bei Konfigurationsdateien dann auch in die Jar geschrieben, wenn es geht.
Das geht leider nicht. Über getResource oder auch getResourceAsStream bekommst Du nur InputStreams keine OutputStreams, die Du fürs schreiben bräuchtest.
 

theuserbl

Bekanntes Mitglied
Und wie ist es mit Verzeichnis lesen?
Habe bisher etwas wie das hier:

Code:
import java.io.*;
import java.util.zip.*;

public class Program {

  public Program() {

    try {
      ZipOutputStream out = new ZipOutputStream(new FileOutputStream("ZipFile.zip"));

      byte[] buf = new byte[4096];
      int len;

      String[] files = { "Program.java", "Program.class", "subdir/GuiCompiler.java", "subdir/GuiCompiler.class" };

      //FileInputStream in;
      InputStream in;

      for (int i=0; i<=files.length-1; i++) {
        in = getClass().getResource(files[i]).openStream(); //new FileInputStream(files[i]);
        out.putNextEntry(new ZipEntry(files[i]));
        while ((len = in.read(buf)) > 0) {
          out.write(buf, 0, len);
        }
        in.close();
      }

      in = getClass().getClassLoader().getResource("javax/swing/JButton.class").openStream();
      out.putNextEntry(new ZipEntry("subdirectory/JButton.class"));
      while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
      }
      in.close();

      //ClassLoader.getSystemResourceAsStream("javax/swing/JPanel.class");
      //in = getClass().getClassLoader().getResource("javax/swing/JButton.class").openStream();
      in = ClassLoader.getSystemResourceAsStream("javax/swing/JPanel.class");
      out.putNextEntry(new ZipEntry("JPanel.class"));
      while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
      }
      in.close();



      out.close();

    } catch (IOException e) {
      System.err.println(e.toString());
    }

  }

  public static void main(String[] args) {
    Program z = new Program();

  }
}

Wüde nun aber gerne sämtliche Datein eines Unterverzeichnisses in meiner Jar-Datei in eine andere Jar-Datei übertragen.
 

theuserbl

Bekanntes Mitglied
Mit
getClass().getResource("Program.class").toString()
erhalte ich zumindest schon mal den Namen meiner Jar-Datei.
Dann kann ich sie doch auch ganz normal als Zip-Datei öffnen und zumindest von lesen (auch wenn ich nicht reuin schreiben kann). Oder?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KonradN Mal eine Frage zu Binary Serialization Allgemeine Java-Themen 15
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Frage regex greater than less than Allgemeine Java-Themen 7
berserkerdq2 Frage zu IntelliJ und JavaFX Allgemeine Java-Themen 1
W Timer Konzept-Frage Allgemeine Java-Themen 16
T Eine Frage des Designs Allgemeine Java-Themen 2
C Frage zu eigenem TableCellRenderer Allgemeine Java-Themen 11
C Programmvorstellung & Frage zum Thema Geschäftsform Allgemeine Java-Themen 51
J Frage zu System.getproperties. Allgemeine Java-Themen 60
molat100 wie kann man die Frage beantworten Allgemeine Java-Themen 1
pkm Frage zur Präzision von Calendar.WEEK_OF_YEAR Allgemeine Java-Themen 12
J Eine Frage zu den Threads und Task Allgemeine Java-Themen 1
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
F Frage zu System.in Allgemeine Java-Themen 3
marcooooo Frage zum Beispiel im Anhang Allgemeine Java-Themen 16
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
B For-Loop Frage Allgemeine Java-Themen 21
L Java frage Allgemeine Java-Themen 3
bueseb84 Frage zu Mock und UpperBound Allgemeine Java-Themen 2
M Frage zum Konstruktor Allgemeine Java-Themen 2
W Best Practice Frage zur Umsetzung MVC Allgemeine Java-Themen 9
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
B Frage zu Unit-Tests Allgemeine Java-Themen 6
T Allgemeine Frage: GUI für 3D-Visualisierung Allgemeine Java-Themen 5
R Allgemeine Frage zu RMI bei MVC Allgemeine Java-Themen 2
O Frage zum Runtimeverhalten von Java ... Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
B Generelle Frage bei einer Webanwendung / Reduzierung von DB Abfragen Allgemeine Java-Themen 1
D Frage zu Vererbung Allgemeine Java-Themen 5
J Frage zu regulärem Ausdruck Allgemeine Java-Themen 2
M Allgemeine Frage: Wie lernt man Java / Programmieren von Grund auf? Allgemeine Java-Themen 7
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Frage zur JLS Allgemeine Java-Themen 0
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
A Methoden Allgemeine Java Frage Allgemeine Java-Themen 3
E String Frage Allgemeine Java-Themen 9
I bin neu bei GitHub, Frage zur Sicherheit Allgemeine Java-Themen 14
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
C KeyListener Frage Allgemeine Java-Themen 3
T Frage zu UML in Java programmieren Allgemeine Java-Themen 1
R Konstanten initialisieren - FRAGE Allgemeine Java-Themen 3
MTJ004 FTP Frage zu FTP Speicherung Java-Android-FTP Allgemeine Java-Themen 5
J Frage zum Entwurf / json-Datenmodell Allgemeine Java-Themen 8
A Frage zu meinem Code Allgemeine Java-Themen 2
RalleYTN Classpath Nur ne kleine Frage zur MANIFEST.MF Allgemeine Java-Themen 4
T Frage zu Access Modifiers Allgemeine Java-Themen 6
W Input/Output Frage zu pdfbox und FileUtils Allgemeine Java-Themen 2
O Frage zur Implementierungsweise Allgemeine Java-Themen 4
B Frage zu Bitshift Allgemeine Java-Themen 3
J Java Zufallsgenerator (6 aus 49) Frage Allgemeine Java-Themen 7
L Frage zu RIA und GWT Allgemeine Java-Themen 0
P Concurrency Frage Allgemeine Java-Themen 8
M Frage zu Enumerations Allgemeine Java-Themen 2
F Unlimited Strength Policy. Frage Verbreitung der Anwendung Allgemeine Java-Themen 1
F Frage zur Library JTS Allgemeine Java-Themen 5
S Java Design Frage Allgemeine Java-Themen 10
E Reflection? Frage Allgemeine Java-Themen 4
C FileInputStream frage Allgemeine Java-Themen 6
G Polymorphie Programmdesign Frage Allgemeine Java-Themen 20
Uzi21 Frage zu NetBeans ( Console) Allgemeine Java-Themen 11
D Classpath Frage zum Java Resource Loading Allgemeine Java-Themen 2
G Frage zu JPA Allgemeine Java-Themen 1
S Methoden Frage Allgemeine Java-Themen 2
P MVC - Frage zu Model Allgemeine Java-Themen 4
K Frage zu Locks Allgemeine Java-Themen 1
S Frage zu abstract Allgemeine Java-Themen 5
M ArrayList<String> Frage Allgemeine Java-Themen 7
M OOP Design Frage Allgemeine Java-Themen 2
N Frage zur while-Schleife Allgemeine Java-Themen 18
T Best Practice Auslesen von Zeichenketten (Frage, Antworten, usw) Allgemeine Java-Themen 4
C Eine Frage zur Bearbeitungszeit Allgemeine Java-Themen 8
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
T Garbage Collection Frage Allgemeine Java-Themen 15
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
D Frage zu Java und Umlauten / charsets Allgemeine Java-Themen 2
B Frage zu Java und OpenGL? Allgemeine Java-Themen 3
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
A eine test thread.join() frage Allgemeine Java-Themen 2
DStrohma LayoutManager Frage zum GridBagLayout Allgemeine Java-Themen 4
F Frage zu Regex möglich Allgemeine Java-Themen 4
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
D Frage und Antwort Programm, Problem bei Methodenaufruf Allgemeine Java-Themen 3
J NetBeans Frage bezüglich der Scanner-Klasse Allgemeine Java-Themen 6
H Java Vector Frage Allgemeine Java-Themen 9
W Frage... Allgemeine Java-Themen 29
R Frage zur topologischen Sortierung Allgemeine Java-Themen 2
H Frage zu weka.core.Instance Allgemeine Java-Themen 3
Y Kleine Frage zu String.split Allgemeine Java-Themen 3
T Frage zu Klassendesing Allgemeine Java-Themen 3
W Frage zu Refactoring statischer Methoden Allgemeine Java-Themen 4
C Eclipse Wichtige frage Allgemeine Java-Themen 5
H Frage zu java.weka.core.Instances Allgemeine Java-Themen 3
S Frage zu Format Modifiers in Log4j Allgemeine Java-Themen 11
H Frage zu clone() Allgemeine Java-Themen 5
4 Simple(?) Frage zu Threads Allgemeine Java-Themen 14
H2SO3- SCJP Chapter 3 Frage 10. Falsche Antwort? Allgemeine Java-Themen 15
H Frage sinnvolle Datenspeicherung und -verarbeitung Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben