本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Java 轉換問題故障診斷
以下資訊可協助您針對使用 Amazon Q Developer 轉換 Java 應用程式時常見的問題進行故障診斷。
主題
為什麼 Amazon Q 無法上傳我的專案?
如果您的專案上傳失敗,可能是因為下列其中一個問題。請參閱您在 Amazon Q 中所看到錯誤的對應主題。
縮減專案大小
為了轉換您的程式碼,Amazon Q 會產生專案成品,其中包含您的原始程式碼、專案相依性和組建日誌。轉換任務的專案成品大小上限為 2 GB。如果您收到與專案成品大小相關的錯誤,則必須縮減專案的大小,或嘗試轉換較小的專案。您可以在程式碼轉換日誌中檢視專案成品檔案的大小。如需詳細資訊,請參閱如何存取程式碼轉換日誌?
在 IDE 中設定代理設定
為了轉換程式碼,Amazon Q 會將專案成品上傳至服務擁有的 Amazon S3 儲存貯體。上傳過程涉及使用 SSL 或 TLS 憑證來建立 Amazon S3 與 IDE 之間的通訊。如果您使用代理伺服器,代理伺服器使用的 SSL 或 TLS 憑證必須受信任,否則 Amazon Q 無法上傳您的專案。
如果您收到與代理或憑證相關的錯誤,您可能需要設定讓 IDE 或作業系統信任您的憑證,或更新其他代理設定。
注意
如果您位於組織的代理伺服器或防火牆後方,也可能會遇到與憑證無關的問題。如果您完成下列設定憑證的程序後仍發生問題,請聯絡您的網路管理員,確認您可從 IDE 與 Amazon S3 進行通訊。如需詳細資訊,請參閱允許存取 Amazon S3。
在 JetBrains 中設定憑證
若要設定您的 JetBrains IDE Java 執行階段環境 (JRE) 使其信任代理伺服器使用的 SSL 或 TLS 憑證,您必須將 SSL 或 TLS 憑證匯入 JRE 中的 cacerts 檔案。cacerts 檔案中包含 HTTPS 和 SSL 等安全連線的受信任根憑證,同時也是 JRE 安全設定的一部分。若要匯入憑證,請完成下列程序。
注意
我們建議您在修改 cacerts 檔案之前先行備份,因為任何錯誤都可能導致安全連線發生問題。
-
確定 JRE 中
cacerts檔案的路徑。JetBrains IDE 隨附的內部 JRE 中cacerts檔案的路徑,取決於作業系統和您使用的 JetBrains IDE 版本。以下是常見作業系統中
cacerts檔案的路徑範例。選擇您的作業系統以查看範例。注意
<JetBrains Installation Folder>是指安裝 JetBrains 產品所在的目錄。此目錄通常是在安裝過程中選擇。jbr資料夾代表 JRE 與 JetBrains IDE 綁定,這是專為搭配 JetBrains IDE 使用而打造的特定 JRE 版本。 -
確定您需要匯入
cacerts檔案的憑證。憑證檔案的副檔名通常是.cer、.crt或.der。如果您不確定要新增哪些憑證,請聯絡您的網路管理員。 -
將憑證匯入
cacerts金鑰存放區。您可以使用 Javakeytool命令進行這項操作。-
開啟命令提示字元並輸入下列命令:
keytool -import -alias <alias> -file <certificate_file> -keystore <path_to_cacerts> -
針對
<alias>,您可以為您要匯入的憑證新增名稱,以供後續參考。此選項為選用。 -
針對
<certificate_file>,指定您要匯入之憑證的路徑。此路徑應該是包含憑證的.cer、.crt或.der檔案的路徑。 -
針對
<path_to_cacerts>,指定您在步驟 1 儲存的cacerts金鑰存放區檔案路徑。這是您要匯入憑證的檔案。
例如,如果您要將名為
my_certificate.cer的憑證匯入 Windows 上 IntelliJ IDEA 中所綁定 JRE 的cacerts金鑰存放區,並且要為憑證提供別名myalias,則命令可能是:keytool -import -alias myalias -file my_certificate.cer -keystore "C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\jbr\bin\cacerts" -
-
在匯入程序期間,系統會提示您輸入金鑰存放區密碼。
cacerts金鑰存放區的預設密碼為changeit。 -
執行命令後,系統會要求您信任憑證。若要確認憑證受信任並完成匯入,請輸入
yes。 -
除了 JRE 之外,您可能還需要將憑證新增至 IDE 本身。如需詳細資訊,請參閱 JetBrains 文件中的伺服器憑證
。
在 Visual Studio Code 中設定憑證
若要設定 Visual Studio Code 信任代理伺服器所使用的 SSL 或 TLS 憑證,請確定您已為作業系統設定下列代理設定。
在 macOS 上為 Visual Studio Code 設定下列代理設定。
將憑證新增至 macOS 鑰匙圈
您必須將代理伺服器使用的憑證新增至 macOS 鑰匙圈 (若您尚未這樣做)。如需有關將憑證新增至鑰匙圈的資訊,請參閱《Keychain Access 使用者指南》中的使用 Mac 上的 Keychain Access 將憑證新增至鑰匙圈
安裝 Mac CA VSCode 延伸模組
Mac CA VSCode 延伸模組
若要安裝延伸模組:
-
在 VS Code 延伸模組窗格中搜尋
mac-ca-vscode,然後選擇安裝。 -
重新啟動 VS Code。
在 macOS 上更新 VS Code 中的代理設定
更新下列設定,確保已為您的代理正確設定 VS Code。
-
在 VS Code 中開啟設定。
-
在搜尋列中,輸入
proxy。 -
在 Http:代理欄位中,新增您的代理 URL。
-
取消勾選 Http:代理嚴格 SSL。
-
在 Http:代理支援下拉式清單中,選擇開啟。
-
在「設定」搜尋列中,輸入
http.experimental.systemCertificatesV2。選取 Http > 試驗:系統憑證 V2。
在 Windows 上為 Visual Studio Code 設定下列代理設定。
在 Windows 上新增憑證作為信任的根憑證
您必須將代理伺服器使用的憑證,新增至 Windows 上受信任的根憑證授權單位存放區 (若您尚未這樣做)。若要新增憑證,請完成下列程序:
-
開啟搜尋工具或「執行」命令視窗。
-
輸入下列命令以開啟 Certificate Manager 工具:
certmgr.msc -
選擇受信任的根憑證授權單位存放區。
-
用滑鼠右鍵按一下憑證,選擇所有工作,然後選擇匯入...。
-
依照提供的指示匯入代理憑證。
-
匯入憑證後,請確認憑證已新增。
在受信任的根認證授權單位存放區中,按兩下憑證。用滑鼠右鍵按一下您新增的憑證,然後選擇屬性。在憑證用途下,啟用此憑證的所有用途選項應為已選取狀態。
安裝 Win-CA VSCode 延伸模組
Win-CA VSCode 延伸模組
若要安裝延伸模組:
-
在 VS Code 設定窗格中搜尋
win-ca。 -
在注入下拉式清單中,選擇附加。
在 Windows 上更新 VS Code 中的代理設定
更新下列設定,確保已為您的代理正確設定 VS Code。
-
在 VS Code 中開啟設定。
-
在搜尋列中,輸入
proxy。 -
在 Http:代理欄位中,新增您的代理 URL。
-
取消勾選 Http:代理嚴格 SSL。
-
在 Http:代理支援下拉式清單中,選擇開啟。
-
在「設定」搜尋列中,輸入
http.experimental.systemCertificatesV2。選取 Http > 試驗:系統憑證 V2。 -
重新啟動 VS Code。
允許存取 Amazon S3
在轉換期間,Amazon Q 會將您的程式碼上傳至服務擁有的 Amazon S3 儲存貯體。如果您的網路或組織尚未設定 Amazon S3 的存取權,Amazon Q 將無法上傳您的專案。
為了確保 Amazon Q 能夠上傳您的專案,請確定您的代理組態和其他網路元件 (例如 Data Lost Prevention (DLP) 政策) 皆已設定為允許存取 Amazon S3。您可能還需要將 Amazon Q 上傳專案所在的 Amazon S3 儲存貯體加入允許清單。如需詳細資訊,請參閱要列入允許清單的 Amazon S3 儲存貯體 URL 和 ARN。
如果您轉換大型專案,而 DLP 政策或其他網路元件未設定將 Amazon S3 儲存貯體加入允許清單,則這些政策和元件可能導致延遲並造成無法成功上傳。如果您選擇不將儲存貯體加入允許清單,則可能需要轉換較小的專案,Amazon Q 才能將其上傳。
為什麼我的 Maven 命令會失敗?
以下是您可能會在 JetBrains 和 Visual Studio Code IDE 中看到的 Maven 組態問題。如果您解決問題後仍看到 Maven 錯誤,表示可能是您的專案有問題。使用錯誤日誌中的資訊來解決專案的任何問題,然後嘗試再次轉換專案。
在 JetBrains 中更新 Maven 組態
如果在 JetBrains 中因 Maven 命令問題而導致轉換失敗,執行索引標籤上會顯示錯誤日誌。使用日誌中的資訊來解決問題。以下是您可能需要解決的一些問題:
-
確定您的 Maven 主路徑設定為套件。前往設定,然後展開建置、執行、部署區段。展開建置工具區段,然後展開 Maven。在 Maven 主路徑下拉式清單中,選擇套件。
-
確定 Java 執行階段環境 (JRE) 使用您的專案 JDK。前往設定,然後展開建置、執行、部署區段。展開 Maven 並選擇執行器。在 JRE 下拉式清單中,選擇使用專案 JDK。
-
確定已啟用 Maven。前往設定並選擇外掛程式。搜尋 Maven,並選擇 Maven 外掛程式。如果您看到啟用按鈕,請選擇該按鈕以啟用 Maven。
在 Visual Studio Code 中更新 Maven 組態
如果在 VS Code 中,轉換因 Maven 命令問題而失敗,包含錯誤日誌的文字檔案便會在新索引標籤中開啟。使用日誌中的資訊來解決問題。
確定您已設定下列其中一個選項:
-
您專案的專案根資料夾中包含 Maven 包裝函式
-
您的
PATH上有 Amazon Q 支援的 Maven 版本
如需詳細資訊,請參閱如何將 Maven 新增至我的 PATH?
如何將 Maven 新增至我的 PATH?
若要在 VS Code 中轉換程式碼而不使用 Maven 包裝函式,您必須安裝 Maven,並將其新增至 PATH 變數。
若要檢查是否已正確安裝 Maven,請在 Visual Studio Code 之外新的作業系統終端中執行 mvn -v。您應該會看到包含您的 Maven 版本的輸出。
如果您是在 Visual Studio Code 終端收到輸出,而不是在您的作業系統終端,或是找不到命令,表示您需要將 Maven 新增至 PATH。
若要將 Maven 新增至您的 PATH,請依照電腦的指示進行。
為什麼 Amazon Q 無法建置我的程式碼?
如果在 Amazon Q 建置程式碼時轉換失敗,則您的專案可能未針對 Amazon Q 建置程式碼的環境正確設定。您可能需要更新建置組態或程式碼實作。
檢閱 Amazon Q 提供的建置日誌輸出,以判斷是否有可對專案進行的變更。以下是一些可能導致 Amazon Q 無法建置程式碼的常見問題。
移除 pom.xml 中的絕對路徑
如果您的 pom.xml 檔案中有絕對路徑,Amazon Q 將無法尋找相關檔案,因此可能無法建置您的程式碼。
以下是您的 pom.xml 檔案中可能包含的絕對路徑範例:
<toolspath> <path>/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/lib/tools.jar</path> </toolspath>
您可以使用指標來建立相對路徑,而不使用絕對路徑。以下範例說明如何使用相對路徑取代先前的絕對路徑:
<toolspath> <path>${java.home}/../lib/tools.jar</path> </toolspath>
在單元測試中移除本機或外部資料庫
Amazon Q 建置程式碼時,會在您的專案中執行任何單元測試。如果單元測試呼叫本機或外部資料庫,Amazon Q 將無法存取資料庫,因而導致建置失敗。為了避免建置失敗,您必須從單元測試中移除資料庫呼叫,或是在提交轉換之前移除單元測試。
為什麼我的轉換在經過 55 分鐘後失敗?
如果您的程式碼轉換任務在經過 55 分鐘後失敗,可能是您的程式碼建置時間超過建置時間限制。目前建置程式碼的時間限制為 55 分鐘。
如果您的本機建置時間需要 55 分鐘或更長的時間,請縮短專案的建置時間來轉換程式碼。如果您的本機建置比使用程式碼轉換的建置更快,請檢查您的專案是否有可能失敗的任務,或是在不同環境中花費更長時間的任務。請考慮停用長時間執行的測試案例。另外,請考慮針對嘗試存取可能無法從安全的 IDE 環境或網際網路取得之資源的情況使用逾時。
為什麼我無法下載轉換後的程式碼?
如果您在轉換完成後無法下載程式碼,可能是因為下列其中一個問題。請參閱您在 Amazon Q 中所看到錯誤的對應主題。
縮減專案大小
轉換完成後,Amazon Q 會產生輸出成品,其中包含升級後程式碼的差異,以及包含其所做變更相關資訊的轉換摘要。輸出成品必須為 1 GB 或更小,IDE 才能下載。
如果輸出成品超過限制,您將無法下載升級後的程式碼或轉換摘要。嘗試轉換較小的專案,以防止產生大型輸出成品。如果問題仍然存在,請聯絡 支援。如需 支援 與 Amazon Q 聯絡的相關資訊,請參閱 使用 Amazon Q Developer 與 支援 聊天。
在 30 天內下載程式碼差異
包含升級後程式碼的程式碼差異檔案只會在轉換完成後 30 天內提供。如果轉換完成後超過 30 天,請重新啟動轉換以下載差異檔案。
在 IDE 中設定代理設定
Amazon Q 會從服務擁有的 Amazon S3 儲存貯體下載升級後的程式碼。下載過程涉及使用 SSL 或 TLS 憑證來建立 Amazon S3 與 IDE 之間的通訊。如果您使用代理伺服器,代理伺服器使用的 SSL 或 TLS 憑證必須受信任,否則 Amazon Q 無法上傳您的專案。
若要下載程式碼,您可能需要將 IDE 設定為信任憑證,或更新其他代理設定。如需有關更新代理設定的詳細資訊,請參閱 在 IDE 中設定代理設定。
移除 JetBrains 代理設定中的萬用字元
如果您已在 JetBrains IDE 中設定代理設定,您可能會在下載升級後的程式碼時看到下列錯誤:
software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: Dangling meta character '*' near index 0
這可能是因為 IDE 代理設定的無代理欄位中有萬用字元 (*) 所造成。Amazon Q 使用的 Java SDK 不支援在此欄位中使用萬用字元項目。
若要下載程式碼,請移除無代理欄位中的任何萬用字元,然後重新啟動 IDE。如果您需要指定應略過代理的主機,請使用規則表達式,而非萬用字元。若要更新 JetBrains IDE 中的代理設定,請參閱 JetBrains 文件中的 HTTP 代理
如何存取程式碼轉換日誌?
存取 JetBrains 中的日誌
如需如何存取 JetBrains 日誌檔案的相關資訊,請參閱 JetBrains 文件中的尋找 IDE 日誌檔案
若要在 JetBrains 中尋找 Amazon Q 發出的日誌,請在 IDE 日誌中搜尋下列字串:
software.aws.toolkits.jetbrains.services.codemodernizer
程式碼轉換日誌會以上述字串開頭。Maven 產生的日誌會顯示在執行索引標籤上,且日誌項目前後都會有上述字串。
存取 Visual Studio Code 中的日誌
若要在 VS Code 中尋找 Amazon Q 發出的日誌,請完成下列步驟:
-
在頂端導覽列中選擇檢視,然後選擇命令面板。
-
在顯示的命令面板中搜尋
Amazon Q: View Logs。 -
日誌會在 IDE 中開啟。若要搜尋
CodeTransformation的日誌檔案,請使用CMD + F或Control + F。
VS Code 中的程式碼轉換日誌會加上 CodeTransformation: 字首。以下是 VS Code 中針對 Maven 複製相依性錯誤產生的日誌範例:
2024-02-12 11:29:16 [ERROR]: CodeTransformation: Error in running Maven copy-dependencies command mvn = /bin/sh: mvn: command not found
如何找到我的轉換任務 ID?
在 JetBrains 中尋找您的任務 ID
若要在 JetBrains 中尋找轉換任務 ID,請前往 Transformation Hub 中的轉換詳細資訊索引標籤,然後選擇顯示任務狀態 (時鐘) 圖示。
在 Visual Studio Code 中尋找您的任務 ID
若要在 VS Code 中尋找轉換任務 ID,請前往 Transformation Hub,然後選擇顯示任務狀態 (時鐘) 圖示。