2012-09-03 98 views
0

我正在使用Jersey和Glassfish編寫Web應用程序。我需要加載一個文件。在我的項目中,它位於src/main/resources/example.txt目錄中。一切工作在Tomcat中,但是當我在Glassfish中運行時,我得到了FileNotFoundException。它沒有找到一個文件,因爲當我嘗試在Glassfish中獲取路徑時,它顯示了一個Glassfish目錄:\ glassfish3122eclipsedefaultdomain \ config \ src \ main \ resources \ example.txt而不是項目目錄,當我得到我的文件時。我該如何改變它?或者有沒有辦法配置一個項目在編譯時將文件複製到需要的目錄?Glassfish - 讀取文件 - 正確的目錄

+0

您是否將這兩個服務器部署爲war文件? – MaVRoSCy

+0

在pom.xml文件中,我將它配置爲 war krajol

回答

1

我是玻璃魚的新手。但我認爲它應該工作。

final String instanceRoot = System.getProperty("com.sun.aas.instanceRoot"); 

if (instanceRoot == null) 
{ 
    throw new FileNotFoundException("Cannot find Glassfish instanceRoot. Is the com.sun.aas.instanceRoot system property set?"); 
} 

File configurationFolder = new File(instanceRoot + File.separator + glassfishDomainConfigurationFolderName); 
File configFile = new File(configurationFolder, fileName); 
+0

嗯,你寫的東西給了我一個Glassfish目錄,但是我想實現的目標是到達我正在構建的項目目錄中的文件(比如MyProjectsName/src/main/resource/example.txt),我不知道如何使用Glassfish – krajol

+0

然後你應該使用 URL url = this.getClass()。getResource(「/ package/name/file.txt 「); File file = new File(url.getFile()); –

+0

url變量在此返回爲null。如果你的意思是這樣的: URL url = this.getClass()。getClassLoader()。getResource(「。」); System.out.println(url.getPath()); 那麼我得到的路徑是這樣的: C:/ Users/me/workspace/glassfish3122eclipsedefaultdomain/lib/classes/ 和可悲的glassfish文件夾不是我想要的。 – krajol