1

そこで、ant build.xmlファイルを作成しました。このファイルでは、2つのJavaプログラムからクラスファイルを取得します。一方は他方を拡張し、それらを2つの別々のjarファイルにパッケージ化してから、起動します。

<java classname="Main">
             <classpath>
                  <pathelement location="${mainDir}"/>
                  <pathelement path="${Main-Class}"/>
             </classpath>
       </java>

antを呼び出すと、「Main」が見つからないと表示されます。必要に応じて残りのbuild.xmlファイルを投稿できますが、混乱しているのはこの部分だけです。私はクラス名が正しいと確信していますが、私の最大の問題は、場所とパスに何が入るのかを理解することです。今はダミー変数があります。

編集:これがファイル全体です。

<?xml version="1.0"?>
<project default="dist" name="webscarab">
<description>Class</description>
<property name="ClassFiles" location="..\Simple\trunk\dev\Class\bin\" />
<property name="mainClassFiles" location="..\Simple\trunk\dev\main\build\" />
<property name="buildDir" location=".\build" />
<property name="distDir" location=".\dist" />
<property name="mainDir" location="..\Simple\trunk\dev\webscarab\src\" />
<target name="init">
        <tstamp/>
        <mkdir dir="${buildDir}"/>
        <mkdir dir="${distDir}"/>
</target>
<target name="dist" depends="init">
    <jar destfile="${distDir}/package${DSTAMP}.jar" basedir="${ ClassFiles}"/>
    <jar destfile="${distDir}/package-web-${DSTAMP}.jar" basedir="${mainClassFiles}"/>
    <java classname="Main">
     <classpath>
       <pathelement location="${mainDir}"/>
       <pathelement path="${Main-Class}"/>
     </classpath>
   </java>
</target>
</project>

編集2:すべてがすでにコンパイルされており、すべての.classファイルがあることに言及する必要があります。Antファイルで行う必要のあることではありません。

4

4 に答える 4

1

おそらく、作成中のJarを指すように要素を変更する必要があります。現在、クラスパスはソースを指しているように見えますが、クラスパスにはコンパイル済みの.classファイルまたはそれらを含むjarが必要なため、機能しません。 。

また、スタイルの問題として、タスクを、distターゲットに依存する別の「run」または「run-app」ターゲットに移動します。

于 2012-07-18T15:33:45.833 に答える
1

「クラスが見つかりません」に関するエラーメッセージは、クラスパスが正しくないことが原因である可能性があります。

クラスパスは、アプリケーションが必要とするすべてのクラスファイルとリソースファイルへのアクセスを許可する必要があります。これは、一連のディレクトリとjarファイルで構成されています。locationは単一のディレクトリまたはパスを示しますが、プラットフォームによって、またはプラットフォームに応じてpath、複数のディレクトリまたはパスを示します。;:

あなたの場合、クラスパスをディレクトリとして、またはjarファイルとして構成する必要があるように思われ${pegaFuzzClassFiles}ます。単一の要素を使用してこれを行うこともできますが、これがより明確であると考えるので、複数の要素をお勧めします。${webScarabClassFiles}${distDir}/package-pega-${DSTAMP}.jar${distDir}/package-web-${DSTAMP}.jar<pathelement path="…"/><pathelement location="…"/>

また、アプリケーションで使用されるサードパーティライブラリがそのパスでも利用できることを確認する必要があります。その中に1つ以上<fileset>をネストすることができ、それぞれが特定のディレクトリ内のすべてのファイルを<classpath>記述します。jar

于 2012-07-18T15:37:10.280 に答える
0

コードをコンパイルするにはJavacタスクを実行する必要があります。その後、コンパイルしたクラスを実行できます。Javacタスクの詳細については、http: //ant.apache.org/manual/Tasks/javac.htmlにアクセスしてください。

2番目のアドバイス: Windowsを使用しているかどうかに関係なく、UNIXのスラッシュ「/」を使用することを強くお勧めします。mainDir、distDir、およびbuildDirプロパティの場所を変更します。

于 2012-07-18T15:40:44.057 に答える
0

antの経験はあまりありませんが、実行するjarファイルをJavaに明示的に指示する必要があるかもしれません。

<java jar="path-to-jar-file" classname="org.owasp.webscarab.Main">
于 2012-07-18T15:46:18.437 に答える