Jar file mit resource erzuegen

ms_cikar

Mitglied
Hallo An alle,

Ich meinem Code lese ich ein Excel File ein. Es funktioniert auch soweit. Wenn ich aber jetzt ein .Jar File erzeuge funktioniert mit dem einlesen nicht.

Problem ist bekannt. ich habe ein res Ordner erzeugt und auch in build path eingefügt.

Nun komme ich nicht weiter. Wie kann ich jetzt auf meinem Excel Datei, welches sich in res Ordner befindet zugreifen?

in Google steht vielen komme aber nicht weiter.



vielen Dank
 

ms_cikar

Mitglied
Excel File befindet sich unter Workspace/DC/res/excel1.xlsx
wenn ich es über eclipse ausführe funktioniert es
sobald ich runnable Jar file erzeuge funktioniert es nicht.
 

ms_cikar

Mitglied
Wenn ich Jar export mache, wähle ich "Extract required libraries into generated Jar" und als output kriege ich nur ein Jar file
 

Anhänge

  • pic1.jpg
    pic1.jpg
    118,6 KB · Aufrufe: 32

Flown

Administrator
Mitarbeiter
Das heißt, dein Excel-File wird in das JAR mitexportiert!
Sachen aus einer JAR auslesen funktioniert mit dem ClassLoader.
Java:
InputStream is = this.getClass().getResourceAsStream("res/test.txt");
 

Flown

Administrator
Mitarbeiter
Na dann füll deinen Klassennamen bei <...> rein:
Java:
InputStream is = <ClassName>.class.getResourceAsStream("res/test.txt");
 

ms_cikar

Mitglied
Vielen Dank
InputStream is = Ex_read_write.class.getResourceAsStream("res/new_grid_x1.xlsx");

kriege bei der ausführung bei
XSSFWorkbook workbook1 = new XSSFWorkbook (file);
Fehlermeldung
 

Flown

Administrator
Mitarbeiter
Schön für dich!

Stell ordentliche Fragen und stell alle Fakten klar dar. Was ist deine Fehlermeldung? Was ist deine Frage dazu?
 

ms_cikar

Mitglied
java.lang.NullPointerException: in is null
at java.util.zip.ZipInputStream.<init>(Unknown Source)
at java.util.zip.ZipInputStream.<init>(Unknown Source)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:88)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:273)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:266)
at DCSQ.Ex_read_write.exceloy(Ex_read_write.java:124)
at DCSQ.DCSQ_new_grid.checked_box(DCSQ_new_grid.java:379)
at DCSQ.DCSQ_new_grid.access$1(DCSQ_new_grid.java:370)
at DCSQ.DCSQ_new_grid$listen.actionPerformed(DCSQ_new_grid.java:359)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)



ich möchte mein Excel file weiterhin lesen können.
 

Flown

Administrator
Mitarbeiter
java.lang.NullPointerException: in is null heißt was für dich?
Hier ein Tipp um selbst nachzusehen: ClassLoader#getResourceAsStream

EDIT: Öffne doch dein JAR mit einem ZIP Programm und sieh dir doch mal deine Orderstruktur darin an, dann kennst du auch den richtigen Pfad
 
Zuletzt bearbeitet:

ms_cikar

Mitglied
Danke Flown

null --> datei konnte nicht gefunden werden.

Die frage dabei warum nicht. ich habe meine Ordnerstruktur als bild geladen.


XSSFWorkbook workbook1 = new XSSFWorkbook (file);

kriege immer wenn ich workbook aufrufe oben angegebene Fehler meldung.

Vielen Dank :)
 

Anhänge

  • 1.jpg
    1.jpg
    89,2 KB · Aufrufe: 26
  • 2.jpg
    2.jpg
    75,7 KB · Aufrufe: 27

ms_cikar

Mitglied
Dies hatte ich auch mit mehrere Möglichkeiten getestet.

FileInputStream file = new FileInputStream("/excel.xlsx"); //Eclipe und Jar funktioniert nicht
FileInputStream file = new FileInputStream("excel.xlsx"); //Eclipse und Jar funktioniert nicht

FileInputStream file = new FileInputStream("res/excel.xlsx"); //Eclipse funktioniert aber in Jar nicht
 

ms_cikar

Mitglied
Hi hier ist mein code und mein Projekt so vereinfacht wie möglich.
Java:
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.FilterOutputStream;
import java.util.Iterator;

import org.apache.poi.ss.util.WorkbookUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook;


public class Excel {
 
public static void main(String[] args) throws Exception {
    Excel_read_write dd =new Excel_read_write();
    dd.exceloy();
}
}
Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.JOptionPane;

import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class Excel_read_write  {
    public static void exceloy() throws Exception {

        int i,x;
        int i1,c1;

    ///                  SCHREIBEN
        System.out.println(" ");
        System.out.println("Lesen");
        System.out.println("");
    
      //  InputStream file = Excel_read_write.class.getClass().getResourceAsStream("res/excel.xlsx");
        FileInputStream file = new FileInputStream("res/excel.xlsx");
        XSSFWorkbook workbook1 =new XSSFWorkbook(file);
        XSSFSheet sheet = workbook1.getSheetAt(0);
        XSSFSheet sheet1 = workbook1.getSheetAt(1);
        XSSFSheet sheet2 = workbook1.getSheetAt(2);
        XSSFSheet sheet3 = workbook1.getSheetAt(3);
      
        for(i1=3; i1<14+3; i1++){
            for(c1=37; c1<31+37; c1++){                
                if(sheet.getRow(i1+1)!=null){
                        if(sheet.getRow(i1+1).getCell(c1+1)==null){
                            XSSFRow r= sheet.getRow(i1+1);
                            XSSFCell c=r.createCell(c1+1);
                            c.setCellValue(33);                          
                        }else{
                            XSSFRow row2 = sheet.getRow(i1+1);
                            XSSFCell cell2 =row2.getCell(c1+1);      
                            cell2.setCellValue(55);
                             }
                }else{
                    XSSFCell Row2= sheet.createRow(i1+1).createCell(c1+1);
                    Row2.setCellValue(44);
                }
            }
            XSSFRow row = sheet1.createRow(35);
            XSSFCell cellx1= row.createCell(0);                    
            file.close();
        
            try {        
                XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook1);
                  FileOutputStream fos = new FileOutputStream(new File ("C:/Neuer Ordner/new_grid.xlsx"));
            
                workbook1.write(fos);
                fos.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
        }
        System.out.println("done");    
    }
}
 

Anhänge

  • x_excel.zip
    261,8 KB · Aufrufe: 3
Zuletzt bearbeitet von einem Moderator:

JStein52

Top Contributor
Du scheinst aus irgendeinem Grund die Notwendigkeit zu haben dass dein ExcelFile im Jar-File enthalten ist, warum auch immer. Die Beispiele aus deinem letzten Post würden dann funktionieren wenn du beim Ausführen deines Jar-Files im gleichen Directory entweder einen Ordner "res" mit dem ExcelFile darin bzw. direkt im gleichen Ordner das ExcelFile hättest, nicht im Jar-File !
Und dass du bei dem folgenden eine Null-Pointer Exception kriegst ist ja klar:

Vielen Dank
InputStream is = Ex_read_write.class.getResourceAsStream("res/new_grid_x1.xlsx");

kriege bei der ausführung bei
XSSFWorkbook workbook1 = new XSSFWorkbook (file);
Fehlermeldung

Wo und wie wird denn "file" mit einem sinnvollen Wert versorgt. Kannst du nicht mal einen zusammenhängenden Auszug deines Codes posten ?

Edit: ok, hast du gerade gemacht
 

fluppe

Mitglied
Hi,

schätze mal dein Programm het einen Nachteil: Wenn Du die Excel Datei einlesen willst, dann hast in den Programmcode einen relativen Pfad, nämlich
Code:
res/new_grid_x1.xlsx
geschrieben.
Versuch mal den absoluten Pfad da reinzuschreiben, also sowas wie

Code:
C:/[user_oder_sowas]/res/new_grid_x1.xlsx
als Pfad benutzen

Das könnte erstmal helfen. Danach solltest Du dir überlegen den Pfad als Input zu übergeben. Das wäre für das Programm sicher hilfreich.

Beste Grüße,
fluppe
 

JStein52

Top Contributor
Wenn du einen relativen Pfadnamen angibst dann ist der Pfad bei getRessourceAsStream(...) relativ zum package der aufrufenden Klasse. Wenn du einen absoluten Pfad angibst (sowas wie "/res/excelfile.xls") dann ist die Angabe relativ zu den Pfaden in CLASSPATH zu verstehen, d.h. diese muss passend gesetzt werden.
 

ms_cikar

Mitglied
Also:
wenn ich den absoluten Pfad eingebe"C:/xxx/xxx/res/excel.xlxs" dann funktioniert das. Ich will aber später von meinem Jar File .exe File machen und es an verschiedene Rechner benutzen. Deswegen würde ich ungern mit absolut Pfad arbeiten.

Vorhaben:

Excel sheet welches ich in meinem Programm anbinden möchte hat mehrere seiten und viele Datenpunkte mit Lücken.
Grafiken etc.

Mein Excel sheet wird gelesen und die Lücken werden von meinem Code je nach Bedingung welches ich auswähle gefüllt.
und als neues Excel sheet gespeichert.

Das funktioniert auch wunderbar über Eclipse.

Nur Wenn ich JAR file erzeuge habe ich das Problem mit dem excel sheet

Ich möchte egal an welchem rechner ich bin. Wenn ich mein Exe file starte dass mein Excel sheet welches ich einlese auch einlesbar(verfügbar) ist.



Danke :)
 

fluppe

Mitglied
Und dein Excel sheet ist also sowas wie ein template oder so ??

Wenn Du den Pfad als Argument übergibst, dann kannst Du auch wieder relative Pfade nutzen.

Wenn Du das Ding in dein JAR file mit eincompilierst (wie auch immer das geht ...) dann brauchst du gar keine Pfade mehr. Egal ob das Ding vorher mal absolut oder relativ war ... der Pfad ist ja dann sozusagen ".", Du würdest noch nicht einmal die excel datei dazupacken müssen.

Die nächste Möglickeit: (absolute Pfade dienen manchmal nur der Diagnose)
Da es mit absoluten Pfaden geht, wette ich jetzt, daß dein eclipse - project nicht im gleichen Verzeichnis sucht (oder anfängt zu suchen) wie deine .exe . Sprich: der relative Pfad ist einfach nur falsch. Lege die Datei an die richtige Stelle und es wird gehen.

Aber Du kannst mir vielleicht eines verraten: Wie entlockst Du eclipse ein jar file ?

Beste Grüße,
...
 

ms_cikar

Mitglied
So es hat jetzt Funktioniert.


Lösung:
InputStream is= classname.class.getClass().getResourceAsStream("/excel.xlsx");

/ vor Excel war Übeltäter.

Vielen Dank für Support
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
R File.pathSeparator und File.separator Java Basics - Anfänger-Themen 46
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
izoards Prunsrv - Windows Service - .bat file starten Java Basics - Anfänger-Themen 84
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
berserkerdq2 IOstreams, was unterscheidet file von z. B. BufferedWriter? Java Basics - Anfänger-Themen 11
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
A java jar-File Java Basics - Anfänger-Themen 1
E Executable jar file fehler Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
I ZIP File erstellen Java Basics - Anfänger-Themen 10
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
D Input/Output File exists canRead canWrite Java Basics - Anfänger-Themen 11
B cal4j - Error at line 1:Unexpected end of file Java Basics - Anfänger-Themen 0
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
F File von Windowsfreigabe laden Java Basics - Anfänger-Themen 1
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
E War-File Problem mit Eclipse Java Basics - Anfänger-Themen 3
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
K Runable Jar File erstellen Java Basics - Anfänger-Themen 17
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
Kopak'rraf Korruptes zip File. Java Basics - Anfänger-Themen 0
T File für Einstellungen wird nicht geladen Java Basics - Anfänger-Themen 1
S Sounddatei in Jar File integrieren Java Basics - Anfänger-Themen 2
S Index File bauen Java Basics - Anfänger-Themen 5
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
N Email mit Anhang - File not Found Java Basics - Anfänger-Themen 1
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A file.delete funktioniert nicht Java Basics - Anfänger-Themen 15
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
S jar file Java Basics - Anfänger-Themen 19
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
B Dateityp von File bekommen Java Basics - Anfänger-Themen 2
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N File virtuell ByteStream Java Basics - Anfänger-Themen 11
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
E lesen csv file column by column Java Basics - Anfänger-Themen 10
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
B Quellcode einelsen "line by line" (und abspeichern in file (txt) Java Basics - Anfänger-Themen 7
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
P Jar File Java Basics - Anfänger-Themen 3
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
S CSV File - "Vergleichen und Sortieren" Java Basics - Anfänger-Themen 3
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Ruvok Executable Jar File startet nicht Java Basics - Anfänger-Themen 3
R Ini File erstellen Java Basics - Anfänger-Themen 1
J file.lenght spinnt ab 50mb Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben