我目前在SQL中有一个模式文件夹,可以在执行应用程序时执行。这是我用来读取和执行这些文件的内容:
private static String getSchemaFromFile(String filename) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new FileReader("src/schema/" + filename + ".sql"));
String queryString;
.....
}
我认为问题在于架构文件夹的路径。我试着看看getResourceAsStream,但我似乎无法让它发挥作用。
当我从eclipse运行时它工作正常但是当我将它编译成JAR时它说文件未找到。如何确保路径正确?
答案 0 :(得分:1)
这些方面的东西。 BTW这可能会失败,除非你正在运行你的jar(在eclipse中执行它可能不起作用)。
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("src/schema/" + filename + ".sql")));
答案 1 :(得分:0)
从eclipse开始工作是因为eclipse允许java
代码从src/schema/
目录中搜索。但是当你使用jar
时,它需要一个绝对路径。
我建议存储将.sql
文件放在属性文件中的绝对路径,以便您可以随时更改。从属性文件中获取位置absolutePath
。然后你可以这样做 -
BufferedReader bufferedReader = new BufferedReader(new FileReader(absolutePath + filename + ".sql"));
答案 2 :(得分:0)
如果架构在jar文件中,则src / schema可能无效,更可能是在schema /中。首先,您需要确认这一点。 jar文件实际上是一个zip文件,因此您可以使用winzip等实用程序解压缩它来检查内容。
一旦确认了架构文件所在的位置,就无法使用FileReader访问它们,因为它们不在文件系统中,而是在jar中。要从jar文件中访问文件,getResourceAsStream是正确的方法。您上次尝试时可能定义了错误的文件夹。