简体   繁体   中英

Java won't recognize file in JAR

I have a .csv database file inside my java program's JAR file. The program works fine in NetBeans IDE before I package it, but once I do, it refuses to believe the file is in it, even though I had it print out the path where it was looking and unzipped the JAR to be sure I told it to look in the right place. How do I make Java see this?

  try
  {
    String path = Main.class.getResource("/items.csv").getPath();
    db = new java.io.File(path);
    loadValues(db);
  }
  catch (java.io.FileNotFoundException ex1)
  {
    System.out.println("Could not find database file (" + ui.db + ").");
  }

Don't create a File object for the resource, as there may be no File . A File represents only "real" files on the filesystem. As far as the OS is concerned a "file" inside a .jar file is just some bytes.

You'll need to use getResourceAsStream() to get an InputStream and read from that.

Once you pack it in jar file it is no longer a direct file..

Try to read it with InputStream

InputStream input = getClass().getRessourceAsStream("/classpath/to/my/items.csv");

Also See

Use Class.getResourceAsStream to load the files inside the jar:

    InputStream is = Main.class.getResourceAsStream("/items.csv");
    loadValues(is);

Change your loadValues method to work on an InputStream rather than a File .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM