0

Ant 1.9.1 でビルドされた jar アーカイブがあります。そこからクラスを起動すると、次の例外が発生します。

Caused by Java exception: java.lang.NoSuchMethodError: com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput.setChecked(Z)V
        at com.blablabla.kats.drivers.CheckBox.check(CheckBox.java:57)
        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 com.blablabla.kats.utils.Operation.doInvoke(Operation.java:142)
        at com.blablabla.kats.utils.Operation.invokeMethod(Operation.java:117)
        at com.blablabla.kats.model.handles.ElementOperationHandle.invokeOn(ElementOperationHandle.java:33)
        at com.blablabla.kats.model.statements.DirectAction.execute(DirectAction.java:45)
        at com.blablabla.kats.model.StatementSequence.executeStatement(StatementSequence.java:74)
        at com.blablabla.kats.model.StatementSequence.doExecute(StatementSequence.java:50)
        at com.blablabla.kats.model.Procedure.call(Procedure.java:46)
        at com.blablabla.kats.model.statements.Invocation.execute(Invocation.java:48)
        at com.blablabla.kats.model.StatementSequence.executeStatement(StatementSequence.java:74)
        at com.blablabla.kats.model.StatementSequence.doExecute(StatementSequence.java:50)
        at com.blablabla.kats.model.TestCase.execute(TestCase.java:41)
        at com.blablabla.kats.model.TestSuite.execute(TestSuite.java:45)
        at com.blablabla.kats.model.TestProgram.execute(TestProgram.java:40)
        at com.blablabla.kats.Main.main(Main.java:158)

「com.blablabla.kats.drivers.CheckBox」クラスをjavacでコンパイルし、jar内の対応するファイルを置き換えると、すべて正常に動作します。私はhtmlunit 2.12を使用しています

java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

対応する Ant タスク:

<path id="classpath.libraries">
    <fileset dir="${basedir}/lib">
      <include name="*.jar"/>
    </fileset>
  </path>


     <target name="compile">
        <javac srcdir="${basedir}/src/java" destdir="classes"  debug="true" source="1.5" target="1.5">
          <classpath refid="classpath.libraries" />
        </javac>
      </target>

${basedir}/lib には多数の jar が含まれています。
主なものは kats.jar です - com.blablabla.kats.drivers.CheckBox
htmlunit-2.12.jar を含む私のプロジェクトです - com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput.setChecked(Z) はどこにありますか。

なぜそれが起こり得るのですか?

4

2 に答える 2

0

私が見る唯一の違いは、antスクリプトで1.5を使用しているのに対し、Javaバージョンを見ると、java6を使用して実行していることです。下位互換性があるはずなので、これが大きな違いを生むかどうかはわかりませんが、試してみてください. ant build.xml でこのバージョンを 1.6 に変更します。

于 2013-06-17T09:24:50.440 に答える
0

古いコンパイル済みクラスを削除していないことがわかりました。コンパイルされたクラスをクリーンアップすると、すべて正常に機能しました。

于 2013-06-18T02:14:22.507 に答える