2016-05-12 20 views
2

Javaで起動されたliquibaseデータベースの更新を実装しようとしています。Liquibase:changelog.xmlのファイルが存在する場合、 "ファイルが存在しません"例外を受け取ります。

私は、次のコードを持っている:

java.sql.Connection connection = openConnection(eventContext); 
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection)); 
String changelog = UpgradePanDatabase.class.getResource("/liquibase/db.changelog.xml").getPath(); 
Liquibase liquibase = new liquibase.Liquibase(changelog, new ClassLoaderResourceAccessor(), database); 
liquibase.update(new Contexts(), new LabelExpression()); 
connection.close(); 

を私は次のようChangeLogParseException受け取る:

/Users/ntregillus/myApp/.mule/apps/myApp/classes/liquibase/dbを。 changelog.xmlが存在しません

ファイルが存在することはわかっていますが、パスをコピーして端末から直接開き、ファイルエクスプローラ内で見つけることもできます。なぜLiquibaseはこのファイルを見つけることができませんか?

+0

完全公開のため、このコードはデプロイ時にノジュールコンポーネント内で実行しています。 –

答えて

4

おそらく、changelogがjarファイル内のリソースとしてパッケージ化されていない可能性があります。あなたのローカル開発者の作業コピーではなく、パッケージ化されたjarの構造を確認してください。

+0

これが該当しました。ファイルが瓶に入っていない –

0

UpgradePanDatabase.class.getResource( "/ LiquiBaseを/ db.changelog.xml")

Absolute_path_of_FolderContaing_UpgradePanDatabase.class +/LiquiBaseを/どうかはWRT "UpgradePanDatabase" の.classへ

チェック、それを検索しますdb.changelog.xml>はあなたのIDEと同じです。

あなたのケースでは、 "クラス"フォルダにWrtする必要があります SOPを使用してデバッグしようとします - "文字列の変更ログ"とは何ですか?それが助けになるかもしれない。

関連する問題