2013-03-28 48 views
0

我很難讓我的簡單的Java EE源代碼在運行於tomcat6(在Centos 6.x上)的Jenkins中編譯。我試過下載JBoss,但找不到Java EE jar文件,所以我可以將它們包含在我的ANT腳本中。我從甲骨文下載了JavaEE,這是一個.sh shell腳本(80mb),我想通過提取或編譯各種jar來「安裝」java ee。問題是它不會運行,因爲Oracle shell腳本需要運行一個X11實例(GUI)......但這是一個無頭的服務器。tomcat + Jenkins + Java EE源代碼=編譯失敗

目標是每晚都有一個使用JavaEE的項目。

我需要以某種方式找到如何使用JBoss的只有它的java ee庫(所以我可以編譯我的代碼)或需要以某種方式獲得oracle的產品工作?或者是否有其他選項用於我的設置?

這裏是我的詹金斯/螞蟻日誌輸出:

build-project: 
[echo] JUtils: /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/build.xml 
[javac] Compiling 27 source files to /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/target/tmp 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:21: error: package javax.mail does not exist 
[javac] import javax.mail.Message; 
[javac]    ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:22: error: package javax.mail does not exist 
[javac] import javax.mail.MessagingException; 
[javac]    ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:23: error: package javax.mail does not exist 
[javac] import javax.mail.Session; 
[javac]    ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:24: error: package javax.mail does not exist 
[javac] import javax.mail.Transport; 
[javac]    ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:25: error: package javax.mail.internet does not exist 
[javac] import javax.mail.internet.AddressException; 
[javac]       ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:26: error: package javax.mail.internet does not exist 
[javac] import javax.mail.internet.InternetAddress; 
[javac]       ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:27: error: package javax.mail.internet does not exist 
[javac] import javax.mail.internet.MimeMessage; 
[javac]       ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:51: error: cannot find symbol 
[javac]    throws AddressException, MessagingException { 
[javac]     ^
[javac] symbol: class AddressException 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:51: error: cannot find symbol 
[javac]    throws AddressException, MessagingException { 
[javac]         ^
[javac] symbol: class MessagingException 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:63: error: cannot find symbol 
[javac]   Session session = Session.getDefaultInstance(props, null); 
[javac]  ^
[javac] symbol: class Session 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:63: error: cannot find symbol 
[javac]   Session session = Session.getDefaultInstance(props, null); 
[javac]       ^
[javac] symbol: variable Session 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:64: error: cannot find symbol 
[javac]   MimeMessage message = new MimeMessage(session); 
[javac]  ^
[javac] symbol: class MimeMessage 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:64: error: cannot find symbol 
[javac]   MimeMessage message = new MimeMessage(session); 
[javac]         ^
[javac] symbol: class MimeMessage 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:65: error: cannot find symbol 
[javac]   message.setFrom(new InternetAddress(from)); 
[javac]       ^
[javac] symbol: class InternetAddress 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:67: error: cannot find symbol 
[javac]   InternetAddress[] toAddress = new InternetAddress[to.length]; 
[javac]  ^
[javac] symbol: class InternetAddress 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:67: error: cannot find symbol 
[javac]   InternetAddress[] toAddress = new InternetAddress[to.length]; 
[javac]           ^
[javac] symbol: class InternetAddress 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:71: error: cannot find symbol 
[javac]    toAddress[i] = new InternetAddress(to[i]); 
[javac]        ^
[javac] symbol: class InternetAddress 
[javac] location: class SendEmail 
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:76: error: package Message does not exist 
[javac]    message.addRecipient(Message.RecipientType.TO, toAddress[i]); 
[javac]          ^
[javac] /usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/src/net/snakedoc/jutils/SendEmail.java:82: error: cannot find symbol 
[javac]   Transport transport = session.getTransport("smtp"); 
[javac]  ^
[javac] symbol: class Transport 
[javac] location: class SendEmail 
[javac] 19 errors 

BUILD FAILED 
/usr/share/tomcat6/.jenkins/jobs/JUtils-Nightly/workspace/build.xml:54: Compile failed; see the compiler error output for details. 

Total time: 4 seconds 
Build step 'Invoke Ant' marked build as failure 
Finished: FAILURE 

編輯:(Ant構建腳本)

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project basedir="." default="build" name="JUtils"> 
<property environment="env"/> 
<property name="ECLIPSE_HOME" value="../../../../../Program Files/eclipse-jee-juno-SR1-win32-x86_64/eclipse"/> 
<property name="JAVAEE_HOME" value="/opt/jboss/modules/**"/> 
<property name="debuglevel" value="source,lines,vars"/> 
<property name="target" value="1.7"/> 
<property name="source" value="1.7"/> 
<property name="dest_dir" value="target"/> 
<property name="tmp_dir" value="tmp"/> 
<property name="jar_name" value="JUtils"/> 
<path id="javaee.libraryclasspath"> 
     <pathelement location="${JAVAEE_HOME}"/> 
    </path> 
<tstamp> 
    <format property="build.datestamp" pattern="yyyy-MM-dd" locale="en,US"/> 
</tstamp> 
<path id="JUtils.classpath"> 
    <pathelement location="bin"/> 
    <pathelement location="lib/h2-1.3.170.jar"/> 
    <pathelement location="lib/hsqldb.jar"/> 
    <pathelement location="lib/jt400.jar"/> 
    <pathelement location="lib/log4j-1.2.17.jar"/> 
    <pathelement location="lib/mariadb-java-client-1.1.1.jar"/> 
    <pathelement location="lib/mysql-connector-java-5.1.23-bin.jar"/> 
    <pathelement location="lib/postgresql-9.2-1002.jdbc4.jar"/> 
    <pathelement location="lib/sqlite-jdbc-3.7.2.jar"/> 
    <path refid="javaee.libraryclasspath"/> 
</path> 
<target name="init"> 
    <mkdir dir="${dest_dir}"/> 
    <mkdir dir="${dest_dir}/${tmp_dir}"/> 
    <mkdir dir="${dest_dir}/${tmp_dir}/src"/> 
    <mkdir dir="${dest_dir}/${tmp_dir}/doc"/> 
    <mkdir dir="${dest_dir}/${tmp_dir}/lib"/> 
    <mkdir dir="${dest_dir}/${tmp_dir}/META-INF"/> 
    <copy includeemptydirs="false" todir="${dest_dir}"> 
     <fileset dir="src"> 
      <exclude name="**/*.java"/> 
     </fileset> 
    </copy> 
    <copy includeemptydirs="false" todir="${dest_dir}/${tmp_dir}"> 
     <fileset dir="."> 
      <include name="**/*"/> 
      <exclude name="target/**"/> 
      <exclude name="logs/**"/> 
      <exclude name="bin/**"/> 
     </fileset> 
    </copy> 
</target> 
<target name="clean"> 
    <delete dir="${dest_dir}"/> 
</target> 
<target depends="clean" name="cleanall"/> 
<target depends="build-subprojects,build-project,jar" name="build"/> 
<target name="build-subprojects"/> 
<target depends="init" name="build-project"> 
    <echo message="${ant.project.name}: ${ant.file}"/> 
    <javac debug="true" debuglevel="${debuglevel}" destdir="${dest_dir}/${tmp_dir}" includeantruntime="false" source="${source}" target="${target}"> 
     <src path="src"/> 
     <classpath refid="JUtils.classpath"/> 
    </javac> 
</target> 
<target name="create_manifest"> 
    <manifest file="${dest_dir}/${tmp_dir}/META-INF/MANIFEST.MF"> 
     <attribute name="Manifest-Version" value="1.0"/> 
     <attribute name="Website" value="www.snakedoc.net"/> 
     <attribute name="Project" value="JUtils-${build.datestamp}"/> 
    </manifest> 
</target> 
<target depends="create_manifest" name="jar"> 
    <jar destfile="${dest_dir}/${jar_name}-${build.datestamp}.jar" basedir="${dest_dir}/${tmp_dir}"/> 
</target> 
<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/> 
<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler"> 
    <copy todir="${ant.library.dir}"> 
     <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> 
    </copy> 
    <unzip dest="${ant.library.dir}"> 
     <patternset includes="jdtCompilerAdapter.jar"/> 
     <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/> 
    </unzip> 
</target> 
<target description="compile project with Eclipse compiler" name="build-eclipse-compiler"> 
    <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> 
    <antcall target="build"/> 
</target> 
<target name="DBTest"> 
    <java classname="net.snakedoc.jutils.testsuite.DBTest" failonerror="true" fork="yes"> 
     <classpath refid="JUtils.classpath"/> 
    </java> 
</target> 

+0

*我下載了甲骨文的JavaEE *爲您的信息,這就是俗稱的GlassFish。你用[TomEE](http://tomee.apache.org/apache-tomee.html)試過了嗎? – 2013-03-28 04:07:08

+0

Tomcat是一個Web服務器而不是應用服務器,它不符合EE標準。 [看這裏](http://haveacafe.wordpress.com/2008/09/26/113/) – BevynQ 2013-03-28 04:10:37

回答

1

你所有的當前錯誤與Java郵件。

在一個側面說明下載JEE6 SDK,使用Maven將大事化小一些的這些相關性問題。

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-web-api</artifactId> 
    <version>6.0</version> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>mail</artifactId> 
    <version>1.4.6</version> 
</dependency> 
+0

儘管你對Java郵件庫是正確的,但我不明白OP如何無法從JBoss獲得它們也沒有GlassFish jars = \。 – 2013-03-28 04:14:50

+0

這將是一個奇怪的方式來獲得編譯依賴關係,你只需要API庫。 JBoss/Glassfish/Weblogic等,都提供實現庫。並不是所有的都包含容易提取的JAR - 例如,JBoss 7使用OSGI模塊。 – Perception 2013-03-28 04:21:19

+0

我實際上設置了一個可用的JBoss服務器,從./standalone.sh文件運行它。我有相同的確切的編譯錯誤......我認爲JBoss會擁有我的項目編譯所需的一切......但也許我做錯了什麼。看到我的編輯上面爲我的Ant構建腳本... – SnakeDoc 2013-03-28 04:22:17