2013-11-10 30 views
0

我試圖用ant來構建我的jar及其所有依賴項,但當我嘗試運行帶有java -jar ircbot.jar命令的jar時,仍然收到Error: Could not find or load main class main.SteamduckBot未能加載或找到主類

這是我的build.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="ircbot" default="jar"> 

    <!-- Name of the output .jar file --> 
    <property name="jar.name" value="ircbot.jar" /> 

    <!-- Base directory for distribution target --> 
    <property name="deploy.home" value="." /> 

    <!-- Base directory for compilation targets --> 
    <property name="build.home" value="." /> 

    <!-- Main class --> 
    <property name="main.class" value="main.SteamduckBot" /> 

    <!-- The base directory for all libraries (jar) files --> 
    <property name="lib.home" value="lib" /> 

    <target name="jar" description="Create jar and MANIFEST.MF"> 

     <pathconvert property="libs.project" pathsep=" "> 
      <mapper> 
       <chainedmapper> 
        <!-- remove absolute path --> 
        <flattenmapper /> 

        <!-- add lib/ prefix --> 
        <globmapper from="*" to="lib/*" /> 
       </chainedmapper> 
      </mapper> 
      <path> 
       <!-- lib.home contains all jar files, 
               in several subdirectories --> 
       <fileset dir="${lib.home}"> 
        <include name="**/*.jar" /> 
       </fileset> 
      </path> 

     </pathconvert> 

     <!-- create the jar --> 
     <jar jarfile="${deploy.home}/${jar.name}" basedir="${build.home}"> 

      <manifest> 
       <attribute name="Built-By" value="${user.name}" /> 
       <attribute name="Main-Class" value="${main.class}" /> 

       <!-- Finally, use the generated libs path --> 
       <attribute name="Class-Path" value="${libs.project}" /> 
      </manifest> 

     </jar> 
    </target> 

</project> 

的Ant構建得很好,但很明顯,我必須做一些錯誤的 - 哪裏是我的錯誤?

這是我的項目的結構: enter image description here

這裏是導致罐的內容:這是JAR的內容:http://pastebin.com/iYQGsutE

回答

0

我沒有在生成文件中看到在那裏你將Java文件編譯爲.class文件,並在jar中包含這些.class文件。看起來好像你將源文件存儲在jar文件中,而不是類文件。

檢查罐子的內容。

+0

這是罐子的內容:http://pastebin.com/iYQGsutE – CodePrimate

+0

所以你證實了我的想法。你用源文件創建了一個jar,而不是編譯的類文件。您的構建文件必須先編譯源文件,然後創建一個包含已編譯的類文件的jar。沒有.java文件應該在jar中。 –

+0

有什麼機會可以告訴我如何做到這一點? – CodePrimate