1
0

More than 1 year has passed since last update.

【Sfdx/Apex】パッケージ開発時の「In field: apexClass - no ApexClass named HogeClass found」と向き合う

Posted at

概要

SalesforceのAppExchangeアプリの開発時、スクラッチ組織へのソースプッシュ時に起こるIn field: apexClass - no ApexClass named HogeClass foundの対策方法

対象の読者の方は
- パッケージ開発をされている
- スクラッチ組織やxml形式のメタデータ、Gitの知識がある
- 上のエラーが出て困っている

以上です。よろしくお願いします。

エラーの経緯

結論を述べる前に経緯を書きます。

あるスクラッチ組織で開発をしていたのですが、30日の期限の中で開発が間に合わなかったので、ソースをブランチで管理したまま、スクラッチ組織を作り直そうと思いました。

プロファイルやカスタムオブジェクトなど、さまざまなメタデータの変更点はあったのですが、sfdx force:source:pullを行い、基本的な変更点はバージョン管理してから作り直しました。

mainブランチのコードでスクラッチ組織を作り、ブランチを切り替えてからsfdx force:source:pushをしたところ、掲題のエラーが出たというわけです。

調べてみる

一度削除して該当クラスを作り直す方法と、設定>開発からコンパイルする方法がありましたが、そもそもスクラッチ組織にソースをプッシュできていないので、関係なさそうでした。

解決方法

アテをつけて色々やってみたところ、以下の方法で解決しました。

.forceignoreに以下のコードを追加

.forceignore
**/profiles/**
**/appMenus/AppSwitcher.appMenu-meta.xml

この状態でsfdx force:source:pushを実行。

その後、追加したコードを削除してsfdx force:source:pushを実行。

以上です。

考察

エラーの詳細を読むと、プロファイルとAppSwitcherが新規作成したApexクラスを探せていないようでした。
ここで、自分で当てをつけて「先にクラスプッシュすればいけるんじゃね…?」と思って試したらいけた感じです。

あくまで推測の域を出ませんが、コンパイルの順序を考えたときに、基本はプロファイルから行われるからこのようなことが起こるのかなーとか考えました。

また余裕がある時に調べてみます。

その他

Salesforceのパッケージ開発にご興味がある方は、採用やっているのでぜひ来てください!
Apexの経験やSalesforceの経験があれば嬉しいですが、Javaなどの経験でも大歓迎です!

カジュアル面談もやってるのでぜひ〜

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0