2016-03-16 41 views
0

我有一個部署到Amazon EMR的hadoop作業。由於電子病歷提供了一個hadoop-core罐子,我在配置依賴我pomprovided在intellij運行配置中包含排除的罐子

<dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-core</artifactId> 
     <version>0.20.2-cdh3u6</version> 
     <scope>provided</scope> 
    </dependency> 

的問題是,當我要調試的IntelliJ內的罐子,它無法找到類別中的一個這個罐子,org.apache.hadoop.util.RunJar

在intellij中調試/運行jar時,是否可以配置Intellij將這個jar包含在classpath中,但是仍然要從輸出jar中排除這個jar?

我的本地機器上的實際jar的路徑是/Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar - 我嘗試在運行配置中向虛擬機選項添加-cp /Users/jbrown/.m2/repository/org/apache/hadoop/hadoop-core/0.20.2-cdh3u6/hadoop-core-0.20.2-cdh3u6.jar,但是這個作業根本無法運行。

+0

假設... Maven?如果是這樣,請澄清誰可能有答案的用戶。還要考慮使用一致的命名約定來修改您對每個JAR的引用,以便用戶更容易理解。 – Harmelodic

回答

0

假設您正在使用依賴性示例中的maven,則可以使用多個maven配置文件來解決此問題。

您可以有一個proddebug配置文件,其中包括一個dependencies部分。調試人員可以跳過所有hadoop相關依賴關係的provided標記,這將包括最終JAR中的依賴關係。

您可以閱讀更多關於maven配置文件here

+0

@jbrown。如果您覺得這個建議可以解決您的問題,請提出答案。謝謝!快樂的哈託! – rahulbmv