2017-04-20 81 views
0

我一直在爲此奮鬥了幾個小時。當通過exec-maven-plugin運行Java代碼時發生java.lang.reflect.InvocationTargetException

我試圖運行與Maven的Java類和我收到以下錯誤

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.NullPointerException 
    at java.util.Properties$LineReader.readLine(Properties.java:418) 
    at java.util.Properties.load0(Properties.java:337) 
    at java.util.Properties.load(Properties.java:325) 
    at com.services.utils.EnvHandler.getProperty(EnvHandler.java:26) 
    at com.services.agentsMonitor.MonitorAgentsTrigger.main(MonitorAgentsTrigger.java:77) 


Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:java (default-cli) on project SupportUtilities: 
An exception occured while executing the Java class. null: 
InvocationTargetException: NullPointerException 

從日食從命令提示符

運行而不是在事情是我已經能夠成功地執行項目

這是我的pom.xml,我已經配置exec-maven-plugin v1.5.0

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.services</groupId> 
    <artifactId>SupportUtilities</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <mockito.version>1.9.0</mockito.version> 
    <platform.messaging-jms-client.version>3.6.2.2</platform.messaging-jms-client.version> 
    <tibco.jms.client.version>7.0.1</tibco.jms.client.version> 
    <omslite.version>0.0.1-SNAPSHOT</omslite.version> 
    <logmon-parent-pom>2.2.2</logmon-parent-pom> 
    <fasterxml.jackson.jsonSchema>2.4.0</fasterxml.jackson.jsonSchema> 
    <fasterxml.jackson.databind>2.4.0</fasterxml.jackson.databind> 
    <fasterxml.jackson.core>2.4.0</fasterxml.jackson.core> 
    <ojdbc6.version>12.1.0.2.0</ojdbc6.version> 
    <commons-lang.version>2.1</commons-lang.version> 
    <log4j.version>1.2.16</log4j.version> 
    <json-simple.version>1.1</json-simple.version> 
    <apache.commons.io.version>1.4.0</apache.commons.io.version> 
    <netty.version>3.2.10.Final</netty.version> 
    <javax.jms.version>1.1</javax.jms.version> 
    <org.slf4j.version>1.6.2</org.slf4j.version> 
    <joda-time.version>2.9</joda-time.version> 
    <sling.commons.json.version>2.0.12</sling.commons.json.version> 
    <jsch.version>0.1.51</jsch.version> 
    <xercesImpl.version>2.8.0</xercesImpl.version> 
    <httpclient.version>4.5.1</httpclient.version> 
    <javax.mail.version>1.5.0-b01</javax.mail.version> 
    <poi-ooxml.version>3.9</poi-ooxml.version> 
    <JSON4J.version>1.1.0</JSON4J.version> 
    <exec-maven-plugin.version>3.1</exec-maven-plugin.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc6</artifactId> 
     <version>${ojdbc6.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>${commons-lang.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>${log4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>${json-simple.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>com.springsource.org.apache.commons.io</artifactId> 
     <version>${apache.commons.io.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.netty</groupId> 
     <artifactId>netty</artifactId> 
     <version>${netty.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>tibco.jms</groupId> 
     <artifactId>tibco_jms</artifactId> 
     <version>${tibco.jms.client.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.jms</groupId> 
     <artifactId>jms</artifactId> 
     <version>${javax.jms.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.walmart.platform.messaging</groupId> 
     <artifactId>messaging-jms-client</artifactId> 
     <version>${platform.messaging-jms-client.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>${joda-time.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.sling</groupId> 
     <artifactId>org.apache.sling.commons.json</artifactId> 
     <version>${sling.commons.json.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.jcraft</groupId> 
     <artifactId>jsch</artifactId> 
     <version>${jsch.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>xerces</groupId> 
     <artifactId>xercesImpl</artifactId> 
     <version>${xercesImpl.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>${httpclient.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>${javax.mail.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>${poi-ooxml.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>JSON4J</artifactId> 
     <version>${JSON4J.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${fasterxml.jackson.core}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${fasterxml.jackson.databind}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.module</groupId> 
     <artifactId>jackson-module-jsonSchema</artifactId> 
     <version>${fasterxml.jackson.jsonSchema}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.5.0</version> 
     </plugin> 
     <!-- <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${exec-maven-plugin.version}</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> --> 
    </plugins> 

    </build> 

</project> 

的問題是,我的代碼無法加載一個文件次位於我的資源文件夾中。

下面是對EnvHandler類的代碼,就在我com.services.util小號包

public Properties getProperty(String env, String mgmtSystem) throws IOException { 

     Properties prop = new Properties(); 
     InputStream propFile = null; 


     /* 
     * Loading based on OMS/IMS 
     */ 

     if("OMS".equalsIgnoreCase(mgmtSystem)) { 
      /* 
      * Loading the properties file based on environment qa/qa2/prod 
      */ 
      if("qa".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/OMS/Credentials_qa.properties"); //I have error here 
       System.out.println("PropFile->" + propFile.toString()); 
       prop.load(propFile); 
       return prop; 

      } 
      else if("qa2".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/OMS/Credentials_qa2.properties"); 
       prop.load(propFile); 
       return prop; 

      }else if("prod".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/OMS/Credentials_prod.properties"); 
       prop.load(propFile); 
       return prop; 

      } 
     } else if("IMS".equalsIgnoreCase(mgmtSystem)) { 
      /* 
      * Loading the properties file based on environment qa/qa2/prod 
      */ 
      if("qa".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/IMS/Credentials_qa.properties");  
       prop.load(propFile); 
       return prop; 

      } 
      else if("qa2".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/IMS/Credentials_qa2.properties"); 
       prop.load(propFile); 
       return prop; 

      }else if("prod".equalsIgnoreCase(env)) { 

       propFile = EnvHandler.class.getResourceAsStream("/com/Services/agentsMonitor/IMS/Credentials_prod.properties"); 
       prop.load(propFile); 
       return prop; 

      } 
     } 


     return null; 

} 

任何幫助,高度讚賞。

如果你需要了解更多信息,請評論

更新:下面是我的項目結構

--src/main/java 
    --com.services.agentsMonitor 
     --MonitorAgentsForTrigger.java 
    --com.services.logsMonitor 
     --MonitorLogsForConnectionIssues.java 
    --com.services.utils 
     --EnvHandler.java 
--src/main/resources 
    --com.services.agentsMonitor 
     --OMS 
      --Credentials_qa.properties 
      --Credentials_qa2.properties 
      --Credentials_prod.properties 
     --IMS 
      --Credentials_qa.properties 
      --Credentials_qa2.properties 
      --Credentials_prod.properties   
+0

@Jens更新了文件夾結構 –

+0

@Jens你是什麼意思,那些是包 –

+0

@Jens,正如我在我的問題中說的,它在eclipse中工作,但不是從命令行 –

回答

0

我一直在爲此而努力了好幾天,直到我發現這個錯誤,因爲在Windows中運行時,該reourceUrl不被視爲區分大小寫,但在unix機器上運行時,它被視爲大小寫敏感,所以資源已提到com/Services而不是/com/services

if("OMS".equalsIgnoreCase(mgmtSystem)) { 
     /* 
     * Loading the properties file based on environment qa/qa2/prod 
     */ 
     if("qa".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/OMS/Credentials_qa.properties"); //I have error here 
      System.out.println("PropFile->" + propFile.toString()); 
      prop.load(propFile); 
      return prop; 

     } 
     else if("qa2".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/OMS/Credentials_qa2.properties"); 
      prop.load(propFile); 
      return prop; 

     }else if("prod".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/OMS/Credentials_prod.properties"); 
      prop.load(propFile); 
      return prop; 

     } 
    } else if("IMS".equalsIgnoreCase(mgmtSystem)) { 
     /* 
     * Loading the properties file based on environment qa/qa2/prod 
     */ 
     if("qa".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/IMS/Credentials_qa.properties");  
      prop.load(propFile); 
      return prop; 

     } 
     else if("qa2".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/IMS/Credentials_qa2.properties"); 
      prop.load(propFile); 
      return prop; 

     }else if("prod".equalsIgnoreCase(env)) { 

      propFile = EnvHandler.class.getResourceAsStream("/com/services/agentsMonitor/IMS/Credentials_prod.properties"); 
      prop.load(propFile); 
      return prop; 

     } 
    } 
相關問題