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 文字列をファイルに書き込もうとしました。2 つのファイルは、次の小さな違いを除けばほとんど同じです。
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();