我正在尝试在Runnable Jar中包含一个本地数据库文件。该应用程序基于一个现有的开源项目,他们将该文件与Class一起放在包中。现在我将数据库文件移动到我在根项目文件夹中创建的“res”映射。编辑代码以查找数据库文件的新路径不起作用。这是一段代码:
private static String defaultDBFileLocation() {
final URL geoDBFileURL = ClassLoader.getSystemClassLoader().getResource("res/GeoIP.dat");
// final URL geoDBFileURL = GeoIPServiceImpl.class.getResource("GeoIP.dat");
if (geoDBFileURL == null) {
return null;
}
try {
final URI geoDBFileURI = geoDBFileURL.toURI();
if (!geoDBFileURI.getScheme().equals("file")) {
// class file loaded not from plain directory on filesystem, e.g. from jar, network, etc.
return null;
}
final File geoDBFile = new File(geoDBFileURI);
return geoDBFile.getPath();
} catch (URISyntaxException e) {
return null;
} catch (IllegalArgumentException e) {
return null;
}
}
通信行是原始创建者用于获取文件的方式。它上面的线是我的新方式。此方法在此行保持返回null:
if (geoDBFileURL == null)
有谁知道我在做错了什么?感谢