Anypoint Code BuilderでRun and Debugができない場合の対処法
概要
MuleSoftのAnypoint Code Builderで"Run and Debug"をする際に色々詰まったので、その時の対処法を記載する。
おそらく、将来的に解消されるものもあると思うが、トライアンドエラーした内容をすべて記す。
前提
- Windows11
- visual studio code(vs code)
- Anypoint Extension Pack v1.3.0
エラーが出たときに見る場所
Run and Debug(F5)を実行した後に、以下の流れで処理が進む(基本的に、自動で表示が切り替わる)
- vs codeのOUTPUTタブに表示される内容(mavenの実行結果)
- vs codeのTERMINALタブに表示される内容(Mule Runtimeの起動&実行結果)
上記のいずれかで(もしくはRun and Debug実行直後に)表示されるエラー文を見ながら、エラー解消していく必要がある。
正常に行けば、Run and Debug実行後に上記の「2」において、deployed
がどこかに表示されているはず。
また、デフォルトでホームディレクトリ(C:/Users/{name}/AnypointCodeBuilder
)にruntimeがインストールされていて、以下のフォルダ構成になっている。
AnypointCodeBuilder
├── java
├── mvn
└── runtime/
├── mule-enterprise-standalone-4.7.0
└── mule-enterprise-standalone-{other-version}
エラー & 対処法
vs codeで開いているフォルダを確かめる
初歩的だが、プロジェクトのフォルダ(pom.xmlがあるフォルダ)でvs codeを起動しておく必要がある。
Anypoint Platformにログインする
コマンドパレット(Ctrl+Shit+P)を開き、MuleSoft: Login to Anypoint Platform
を選択する。
その後、各種指示に従ってログインをする。
※直接的には必要ないかもしれないが、ログインを前提とする操作が多いため初めに実行しておくとよい。
powershellの実行ポリシーを変更する
Run and Debugを実行すると、(windowsの場合)powershellで実行コマンドが走る。
その中でps1ファイルを実行しているが、デフォルトだとpowershell内で実行権限がないために失敗する。
Set-ExecutionPolicy
コマンドを使って設定変更すればよい。
以下の記事を参考に設定ができる。
埋め込みのMule Runtimeを再インストールする
以下のエラーが出た場合に有効である。
-
com.mulesoft.licm.impl.TrueLicenseHelper: Couldn't validate license key!
- どうやら、1ヶ月でライセンスが切れるようなので、都度再インストールは必要
-
その他エラー(後述)に記載のエラー発生時
- ※有効というより、他に手が思いつかなかった
手順
以下の手順で、runtimeの再インストールをする
- 使用しているruntime(
AnypointCodeBuilder/runtime/mule-enterprise-standalone-{version}
)をフォルダごと削除する
2. 「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません」の場合の対処法は後述の通りである - vs codeのコマンドパレット(Ctrl+Shift+P)を開く
-
MuleSoft: Download Mule Runtime and Java Versions
を選択する
4. 指示に従い、適切なバージョンをインストールする - 消したフォルダと同じ場所(
AnypointCodeBuilder/runtime/mule-enterprise-standalone-{version}
)にruntimeがインストールされているはずである。
※3をしなくても、runtimeがないのでインストールしますか?のようなメッセージが出る場合もある。その場合はそこから再インストールすればよい
別プロセスがMule Runtimeを使用している場合
以下の2パターンがあった。
- Runtime関連のフォルダやファイルを消そうとした場合に、「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません」と表示される
- vs codeでRun and Debugを実行すると
EBUSY: resource busy or locked ...
と表示される
先に対処法を説明したうえで、エラー詳細は後述する。
対処法
以下の3つを試すとよい。
- vs codeを再起動する
- PCを再起動する
- プロセスを特定して終了する
私の場合、PCを再起動してもダメだった場合があったので、3つ目の対処法も必要であった。
なお、もう一度vs codeを開くと同じ症状になる場合がある(無限ループする)ので、本エラーが解消したうえで埋め込みのMule Runtimeを再インストールするを実行するのも有効かもしれない。
なお、「3. プロセスを特定して終了する」については以下を参考にしながら実施ができる。
-
プロセスを特定してプロセスを終了する
- 手順詳細はブログ記事の通りで、リソースモニターを使用する。
- 検索したいファイルは、手元で表示されているエラー文に従えばよいが、AnypointCodeBuilderで検索すると手っ取り早い
-
開いているポートを特定する
- 直接的な問題解決にはならないが、なぜかポートが開いたままになっていた(私の場合は9999が開いていた)
続けてエラー詳細について触れていく。
「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません」
エラーメッセージの通りで、別のプログラムがファイルだやファイルを開いている。
おそらくvs code(Anypoint Code Builderの拡張機能)が使っているのだと思うが、詳細は不明である。
特に、vs codeを停止した後でも解消されない場合があり、なかなか謎である。
EBUSY: resource busy or locked...
おそらく原因は「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません」と同じと考えられる。
私の環境では、AnypointCodeBuilder\runtime\mule-enterprise-standalone-4.7.0\server-plugins\mule-dx-mule-debugger-mule-server-plugin\lib\checker-qual-2.10.0.jar
がbusy or lockedとなっていた。
こちらはPC再起動をしても解消しなかった。
力技で実行する
拡張機能を経由せずに、コマンドで直接実行することもできる。
※拡張機能の"変なエラー"は回避できるかもしれない
以下の手順を実行すると、Run and Debugと同じ動きを再現できる。
※{}
の中は適宜自分のものに読み替えること。{version}
については実際にフォルダを探しに行けばわかるはずである。
- java, mavenを(適切なversionで)使用できるようにしておく。
-
mvn clean package -DskipMunitTests
を実行する。- プロジェクトフォルダの中に
target/{api-name}.jar
が生成されている
- プロジェクトフォルダの中に
- 以下の手順により、生成されたjarファイルをruntimeに配置する。
- jarファイルをコピーして、
C:/Users/{name}/AnypointCodeBuilder/mule-enterprise-standalone-{version}/apps
配下に配置する。 - 配置したjarファイルの拡張子をzipに変更する(警告が出るが無視する)
- zipを解凍する(不要なので、zipファイル自体は削除してよい)
- jarファイルをコピーして、
-
${env:JAVA_HOME}='C:\Users\{user}\AnypointCodeBuilder\java\jdk-{version}'; & 'C:\Users\takaf\AnypointCodeBuilder\runtime\mule-enterprise-standalone-{version}\localRuntimeExecution.ps1' '-M-Dmule.forceConsoleLog' '-M-Dmule.testingMode' '-M-XX:-UseBiasedLocking' '-M-Dfile.encoding=UTF-8' '-M-XX:+UseG1GC' '-M-XX:+UseStringDeduplication' '-M-Dcom.ning.http.client.AsyncHttpClientConfig.useProxyProperties=true' '-M-Dmule.debugger.test.port=8000' '-M-Dmule.debug.enable=true' 'console0' '-M-Dmule.debug.port=6666' '-M-Dmule.debug.enable=true' '-M-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=57744'
を実行する。-
${env:JAVA_HOME}=
部分はpowershellのコマンドとして正しいので、そのままで(置き換えたりしないで)よい。
-
※公式の方法ではないので、自己責任でお願いします。
※MuleSoft standaloneの仕組みと同じはず。
その他エラー
原因がわからないが、埋め込みのMule Runtimeを再インストールするによって何とか解消したもの
アクセスが拒否された。
よくわからない。。。
Exception in thread "main" java.io.FileNotFoundException: C:\Users\{user}\AnypointCodeBuilder\runtime\mule-enterprise-standalone-4.7.0\bin\..\conf\wrapper.conf (アクセスが拒否されました。)
FileNotFoundException
よくわからない。。。
ERROR 2024-09-16 09:54:08,912 [WrapperListener_start_runner] [processor: ; event: ] org.mule.runtime.module.deployment.internal.DefaultArchiveDeployer: Failed to deploy artifact [api-name-1.0.0-SNAPSHOT-mule-application]
org.mule.runtime.deployment.model.api.DeploymentException: Failed to deploy artifact [api-name-1.0.0-SNAPSHOT-mule-application]
Caused by: org.mule.runtime.api.exception.MuleRuntimeException: org.mule.runtime.deployment.model.api.DeploymentInitException: FileNotFoundException: global.xml
Caused by: org.mule.runtime.deployment.model.api.DeploymentInitException: FileNotFoundException: global.xml
関係ないエラー
以下は、xmlファイル上でエラー表示されていたが、結局関係なかった(エラーのままでも正常に動いたもの)である。
色々試したが、mvn clean package -DskipMunitTests
の結果(OUTPUTタブに表示される内容)にエラーがなければ問題ないのだと思う。
Anypoint Code Builderがリリースされたばかりで不安定なのだろうと推測している。
※validation:allを使う際に、以下のエラーが表示される。
要素'{"http://www.mulesoft.org/schema/mule/validation":is-email}'で始まる無効なコンテンツが見つかりました。'{"http://www.mulesoft.org/schema/mule/core":annotations, "http://www.mulesoft.org/schema/mule/core":error-mapping, "http://www.mulesoft.org/schema/mule/core":abstract-validator}'のいずれかが必要です。(UNKNOWN_NAMESPACE)
まとめ
Run and Debugをするために色々苦労したが、その際のエラーと対処法をまとめた。
Anypoint Code Builderは使いやすさはあるが、まだまだ不安定な部分もあるのだと考えている。
Run and Debugで色々詰まってしまったが、アップデートされるうちに、本記事のエラーもいずれは出なくなるだろうと予想している。
Discussion