【问题标题】:Java can't find existing method in a classJava在类中找不到现有方法
【发布时间】:2013-06-13 04:22:09
【问题描述】:

我有使用 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)

当我通过 javac 编译“com.blablabla.kats.drivers.CheckBox”类并替换 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 包含很多 jars。
主要是 kats.jar - 我的项目,包含 com.blablabla.kats.drivers.CheckBox
htmlunit-2.12.jar - com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput.setChecked(Z) 在哪里。

为什么会发生?

【问题讨论】:

  • 你在classpath.libraries有什么
  • 它包含很多罐子。主要是 kats.jar - 我的项目,包含 com.blablabla.kats.drivers.CheckBox htmlunit-2.12.jar - com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput.setChecked(Z) 在哪里。
  • 谢谢,我发现我没有删除旧的编译类。

标签: java ant


【解决方案1】:

我看到的唯一区别是,您在 ant 脚本中使用 1.5,而查看您使用 java6 运行它的 java 版本。我不确定这是否会产生很大的不同,因为它应该向后兼容,但仍然试一试。在 ant build.xml 中将此版本更改为 1.6

【讨论】:

  • 谢谢,但没有帮助
【解决方案2】:

我发现我没有删除旧的编译类。 当我清理编译的类时一切正常。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多