[英]Unable to load file from resources folder when running app locally
使用 Java 8,我有一個 AWS lambda 函數,它在src/main/resources
文件夾中有一個平面文件。 在 AWS 上運行時,我沒有遇到任何問題。 但是當我在本地運行時,我的應用程序找不到該文件。
這是我的代碼的樣子:
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource( "./resources/forms/myform.pdf" );
當它作為 AWS lambda 運行時,這適用於加載它,但在本地不起作用。 在本地運行時, url
變量為空。 當我在 AWS 上運行代碼時,ClassLoader 是java.net.URLClassLoader
而在本地它是sun.misc.Launcher$AppClassLoader
。 我不確定這是否重要。
如果有幫助,這是我的文件結構:
我正在使用我的ControllerTest
類。 我沒有使用 AWS 默認創建的LambdaFunctionHandlerTest
。 這是我的ControllerTest
所做的一切:
public class ControllerTest {
public static void main( String[] args ) {
MyController controller = new MyController();
controller.create();
}
}
任何想法如何讓它在本地和 AWS 上工作? 這是 Eclipse 中的 Maven 項目,我在想我在測試函數中執行控制器的方式不正確。 eclipse 中的運行配置是否需要更改為默認值?
更新:更改我到forms/myform.pdf
路徑修復了本地運行的問題。 但是,它現在在作為 AWS lambda 函數運行時無法找到該文件。 這是在 AWS 中創建的文件夾結構:
您可以在此處查看 Maven 標准目錄布局: https : //maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
你所有的測試類和測試資源都將被編譯並放置在 target/test-classes 目錄中。 在您的情況下, getClassLoader().getResource 將返回要存儲 forms/myform.pdf 的 target/test-classes 目錄的路徑。
默認情況下,測試類將從您的 test-classes 目錄中查找資源。 如果在 test-classes 目錄中找不到它們,則會搜索 classes 文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.