我有一个构建和执行 sql 语句/字符串的 java 应用程序。当我从 Eclipse 运行应用程序时,一切正常。
但是当我运行已部署/二进制应用程序(从二进制文件中读取 .sql 资源)时,我收到以下错误:
Exception in thread "main" java.lang.RuntimeException: Error executing sql:
..
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'IF'.
从 Eclipse 运行和运行已部署的应用程序时,我尝试将 sql 字符串写入文件。除了这些小差异之外,这两个文件几乎相同:
1)工作字符串以:'go'开头
2) 工作字符串在 IF 之前有 'go'
任何想法为什么源版本有这些标签而构建版本没有?我使用 gradle 构建并将编译器设置为使用 UTF-8:
[project.compileJava, project.compileTestJava]*.options*.encoding = 'UTF-8'
这就是我从 jar 文件中读取文件的方式:
InputStream inputStream = jarFile.getInputStream(entry);
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, "UTF-8");
String string = writer.toString();