2016-10-11 11 views
-1

実行可能なjarファイルを作成しようとしています。私のプロジェクトにはmodels.txtファイルが含まれています。私のプロジェクトはエラーなしで完全にEclipseで動作しますが、実行可能なjarファイルにエクスポートすると動作しません。私はここで、エラーと、ファイルが呼び出された場所のコードを添付します。Runnable Jarファイルでそのようなファイル例外がありません

public static HashMap<String, RenderModel> getModelList(String file) throws IOException { 
    List<String> data; 
    HashMap<String, RenderModel> namesToModels = new HashMap<String, RenderModel>(); 

    if (file != null) { 
     data = Files.readAllLines(Paths.get(file), StandardCharsets.UTF_8); 
    } else { 
     String path = "models/models.txt"; 
     data = Files.readAllLines(Paths.get(path), StandardCharsets.UTF_8); 
    } 

    Iterator<String> dataIterator = data.iterator(); 
    while (dataIterator.hasNext()) { 
     String dataLine = dataIterator.next(); 
     System.out.println(dataLine); 
     String[] line = dataLine.split("; "); 
     String key = line[0]; 
     String valueObj = line[1]; 
     String valueMtl = line[2]; 
     float scale = Float.parseFloat((String) line[3]); 
     RenderModel v = new RenderModel(valueObj, valueMtl, scale); 
     namesToModels.put(key, v); 
    } 
    RenderModel v = new RenderModel("custom", "custom", 1.0f); 
    namesToModels.put("Choose Model from file", v); 
    return namesToModels; 
} 

誤差画像:あなたのコードで

Error Image

+0

コードではなくテキストとしてコードを追加してください – Jens

+0

あなたのjarファイルにはsrcフォルダはありません。 – Jens

+0

eclipseでは、srcフォルダがあり、すべて正常に動作します。 jarファイルにsrcフォルダを作成する方法 – Ankit1016

答えて

1

ファイルがJarにあり、あなたがそれらを読むことができない場合は、実行してファイルにアクセスしてみてください。

getClass().getClassLoader().getResource(fileName); 

使用この代わりに、静的メソッドのために:

ClassName.class.getClassLoader().getResource(fileName); 

fileNameが名前でありますファイルの名前はClassNameで、ステートメントが呼び出されるクラスの名前です。

+0

ありがとう、これはおそらくこれがメインコードの私の問題を解決します... – Ankit1016

0

model.txtのパスは 'SRC /モデル/ model.txt' です。あなたのプロジェクトがパッケージ化されているときは、srcフォルダは通常含まれていません。次に、ファイルの場所を変更する必要があります。 jarファイルの外側にファイルを置く方が良いかもしれませんが、Javaクラスパスの内側に置いてください。

0

jarを実行すると、パスにsrc/models/models.txtというファイルがないため、このパスはIDEにのみ存在します(途中でJARを到達できる場所に配置することはできません)そのパスではありませんが、これはどのようになっているのでしょうか)、あなたのプロジェクトをjarファイルにパッケージ化するときには、パッケージmodelsにパッケージされていて、それをデフォルトファイルとしてclasspathで読み込むことができます。

関連する問題