2013-08-20 30 views
0

我正在使用一個庫來掃描我的類路徑以便找到我的接口的實現(這可能看起來很奇怪,我知道有更好的方法,但我無法更改這個)。 當我使用這個庫在它的工作原理獨立的應用程序,因爲在JBoss環境中將war文件添加到java.class.path中

java.class.path 

返回classpath中我的jar文件上。現在,我想在部署到一個JBoss 7.當詢問類路徑在這種情況下,這是返回一個Web項目使用這個庫:

java.class.path /Applications/jboss-as-7.1.1.Final/jboss-modules.jar 

我真的不知道我可以補充一下到Java .class.path env變量。任何想法如何我可以添加一些東西到這個變量或更好的方法來解決這個問題? 在這個lib中存在add()函數,我可以添加需要掃描的jar文件。所以如果有人能告訴我如何獲得這個戰爭文件的位置,那也是有幫助的)。

這是我講的圖書館: http://software.clapper.org/javautil/

注:java.class.path使用這個庫裏面,我真的不希望進行任何更改,說庫。

在此先感謝。

+0

你有沒有在run.sh或run.bat中尋找你的JBoss服務器?它是否在該文件中設置了類路徑變量? – mconlin

回答

1

沒有能夠控制類加載器的類路徑掃描沒有可移植的方式。更好的選擇來實現這一目標是:

  • 使用ServiceLoaderMETA-INF/services
  • 使用CDI和註冊的實現爲CDI豆
+0

謝謝,你沒有解決我的問題,但你解決了我的設置。我正在做的是自己實現像ServiceLoader這樣的東西。我不知道ServiceLoader是什麼,我從來沒有聽說過。我研究過它,它正是我所需要的,並嵌入在java本身中。 現在我可以使用serviceloader來查找實現(我可以在META-INF/service中指定)並創建我的接口實例。 – KwintenP