【问题标题】:Project runs in eclipse but not in command line: File not found exception [duplicate]项目在 Eclipse 中运行,但不在命令行中:找不到文件异常 [重复]
【发布时间】:2017-12-02 13:32:56
【问题描述】:

当我在 Eclipse 中运行代码时,它运行得非常好,但是当我通过命令行运行它时出现错误,我环顾四周,但找不到有效的答案。我得到的错误如下:

C:\Users\Name\Documents\Java Projects\PokemonBattle\Builds>java -jar v1.0.jar

java.io.FileNotFoundException: src\data\pokemon.csv (The system cannot find the path specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileReader.<init>(Unknown Source)
        at pokemonFramework.ReadCSV.read(ReadCSV.java:30)
        at pokemonFramework.Pokemon.getPkmnInfo(Pokemon.java:174)
        at main.PokemonBattleClient.<init>(PokemonBattleClient.java:64)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at processing.core.PApplet.runSketch(PApplet.java:10453)
        at processing.core.PApplet.main(PApplet.java:10279)
        at processing.core.PApplet.main(PApplet.java:10261)
        at main.PokemonBattleClient.main(PokemonBattleClient.java:89)
java.lang.NullPointerException
        at pokemonFramework.ReadCSV.read(ReadCSV.java:47)
        at pokemonFramework.Pokemon.getPkmnInfo(Pokemon.java:174)
        at main.PokemonBattleClient.<init>(PokemonBattleClient.java:64)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at processing.core.PApplet.runSketch(PApplet.java:10453)
        at processing.core.PApplet.main(PApplet.java:10279)
        at processing.core.PApplet.main(PApplet.java:10261)
        at main.PokemonBattleClient.main(PokemonBattleClient.java:89)

File structure of JAR

提前致谢!

【问题讨论】:

  • jvm 正在从其工作目录中寻找 src\data\pokemon.csv。该文件似乎位于 eclipse 项目中。以前有人问过这个问题。继续搜索

标签: java eclipse file runtime-error


【解决方案1】:

我假设您是从 Builds 目录启动程序 - 而不是项目根目录。因此路径 src\data\pokemon.csv 无法解析。您必须将 jar 复制到项目根目录或使用 java -jar Builds\v1.0.jar 从项目根目录启动程序

【讨论】:

  • 我将 jar 构建为可运行的 jar,其中包含文件。 Jar File Structure
  • 您无法使用 FileReader 从 jar 中读取。它在 Eclipse 下工作,因为 pokemon.csv 在 src 目录中仍然可用 - 所以你的程序使用它。如果要从 jar 中读取文件,则必须使用类加载器的 getResourceAsStream 方法。而且您必须从路径中删除“src”。所以它只是 this.getClass().getResourceAsStream("data/pokemon.csv") 如果你想使用阅读器,你将不得不在你的 read() 方法中使用 InputStreamReader。 new InputStreamReader(this.getClass().getResourceAsStream("data/pokemon.csv"))
猜你喜欢
  • 2015-12-21
  • 1970-01-01
  • 2020-09-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多