は私の.jar内File
としてクラスパッケージのディレクトリを取得しようとしています(階層は/controller/core
です):私はそれを実行したとき、私はIDE内のプログラムを実行されますが、ときに動作.jar内のクラスパッケージのディレクトリを取得することは可能ですか?
File directory_file_of_package = new File(getClass().getResource("/controller/core").toURI());
スタンドアロンの.jarとして、それは私に、このエラーを与える:これらの質問は、リソース(getResourceAsStream()
)としての.jar内File
を取得関与するので
java.lang.IllegalArgumentException: URI is not hierarchical
これらの質問(why my URI is not hierarchical?とJava Jar file: use resource errors: URI is not hierarchical)を見ると、私を助けていませんしかし、私が得ようとしているのはディレクトリです。
さらに、受け入れ答え状態この:
Generally the IDEs separates on file system classes and resources. But when the jar is created they are put all together.
ので、/controller/core
のディレクトリをつかむための方法はありませんか?
マイXY問題:私はCSVJDBC(http://csvjdbc.sourceforge.net/)を使用して.CSVファイルを読み込むしようとしています
、および方法DriverManager
参照CSVファイル含むフォルダがある場合に限りデータベースとCSVファイルはテーブルです。
public class SearchData {
void SearchData() {
try {
Class.forName("org.relique.jdbc.csv.CsvDriver");
File directory_file_of_package_containing_csv = new File(getClass().getResource("/controller/core").toURI());
// Driver points to directory which contains the CSV file as if it is the database
Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + directory_file_of_package_containing_csv.toString());
System.out.println("Connection established.");
Statement stmt = conn.createStatement();
System.out.println("Statement created.");
// CSV is named "data.csv" so the CsvDriver sees "data" as the table name
String sql = "SELECT id,name FROM data";
ResultSet results = stmt.executeQuery(sql);
...
} catch (ClassNotFoundException | SQLException | URISyntaxException e) {
e.printStackTrace();
}
}
}
.jarに含まれるcsvファイルにCsvJdbcを指定するにはどうすればよいですか?