[英]Running java from within the console in eclipse with maven
所以,這不是關於從eclipse中運行java代碼 ,而是從eclipse中的maven 執行java命令 (在eclipse之外它運行得很好)。
具體來說:
我們有一個.cmd文件,我們從maven中執行,相關部分:
java -classpath (the classpath) com.bea.wls.ejbgen.EJBGen (and some other stuff)
從命令行(mvn clean install)運行時,我們得到這個輸出:
EJBGen WebLogic Server 12.1.3.0.0 Wed May 21 18:53:34 PDT 2014 1604337
Creating my\package\ejb\Local.java
Creating my\package\ejb\WebserviceLocal.java
Creating my\package\ejb\ServiceLocal.java
Creating my\package\ejb\LocalHome.java
Creating my\package\ejb\WebserviceLocalHome.java
Creating my\package\ejb\ServiceLocalHome.java
一切都很好,
但是當從eclipse中執行時:
EJBGen isn't supported by JDK version higher than 1.7
現在,console / m2e如何運行選擇使用哪個java二進制文件?
任何幫助/指針非常感謝!!!
S.
編輯:
(確實)exec-maven-plugin插件的配置:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<groupId>org.codehaus.mojo</groupId>
<executions>
<execution>
<id>runEJBGen</id>
<phase>initialize</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>runEJBGen.cmd</executable>
<!-- optional -->
<workingDirectory>${project.basedir}\src\main\java</workingDirectory>
</configuration>
</plugin>
我們使用這種機制(而不是java變體)因為其他 - 項目特定 - 原因......
編輯2: pom.xml的編譯選項
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
基本上,您正嘗試從另一個Java進程中運行java -classpath ...
命令,從而創建一個新的本機進程 。 從這一點來看,無論您對Maven,Eclipse等的配置如何被忽略, 只有為調用進程設置的PATH
環境變量將決定將運行哪個Java版本 ,即將使用在PATH
上找到的第一個java
可執行文件。
您的流程如下所示:
|- root process
|- Eclipse process (run on Java 8 as per Eclipse config)
|- Maven process (run on Java 7 as per M2E run config)
|- New native process which will execute your .cmd file
|- New Java process running from first java executable found on PATH entries
這些進程中的每一個都繼承其父進程的PATH
並可以對其進行操作。 Eclipse可能在包含Java 8可執行文件的PATH
上添加新條目。 例如,當我從Eclipse中運行Maven構建並打印PATH
變量以將其與Eclipse外部的相同構建進行比較時,Eclipse進程在開頭具有以下條目,這些條目在Eclipse外部不存在:
C:/Program Files/Java/jre1.8.0_121/bin/server
C:/Program Files/Java/jre1.8.0_121/bin
C:/Program Files/Java/jre1.8.0_121/lib/amd64
這意味着我的Eclipse進程將Java 8條目添加到PATH
。 我找不到任何有關這些條目的相關文檔,但您的問題可能是相同的。 您可以嘗試使用類似System.out.println(System.getenv("PATH"));
PATH變量System.out.println(System.getenv("PATH"));
在執行.cmd文件之前,在Eclipse和Eclipse之間進行比較。
嘗試確保您的腳本運行正確的Java版本。 你有各種選擇:
%JAVA_HOME%/bin/java
來使用JAVA_HOME
環境變量指向的Java可執行文件 java
,而是使用完整的路徑,例如C:/java7/bin/java.exe
PATH
上搜索java
可執行文件,測試版本並僅運行與您期望的版本匹配的java可執行文件(您可以在Windows上使用where命令) PATH
環境變量,以確保使用正確的Java版本 java
可執行文件的任何其他方式;) 注意:最終的最佳方法是避免運行進程調用進程調用進程,它必然會導致這樣的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.