JSP不在JDK 1.8中编译

时间:2017-11-29 15:34:05

标签: jsp junit java-8 netbeans-8

  

嗨,朋友们,

     

我正在一个项目中工作,我们刚刚从JAVA 7迁移到JAVA   8.在这样做时,我遇到了与jsp编译问题相关的问题。在通过谷歌搜索解决问题时,我开始了解它   是一个常见的问题。但我试过更换罐子,但事实并非如此   似乎工作。当Java版本为7时,我在Jetty Server中运行。

     

所以运行测试用例,那里也存在问题。我在发帖   错误以及类路径中的jar和示例java和   jsp代码。

     

请注意我只需要在JDK 1.8中编译,所以请帮助我   围绕JDK 8的可能解决方案。

     

错误日志:

testSimpleSearchClassComboBox(com.osm.jsp.SimpleSearchTest)junit.framework.AssertionFailedError:  expected:<Creo Elements/Direct Model Manager Web Client - Index> but was:<Error 500 PWC6033: Unable to compile class for JSP PWC6197: An error occurred at line: 7 in the jsp file: /style/ptc_creo/../../include/head_common.jsp PWC6199: Generated servlet error: The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files>
     [java]     at com.osm.ReportingTestCase.assertEquals(ReportingTestCase.java:246)
     [java]     at com.osm.jsp.SimpleSearchTest.getHtmlForm(SimpleSearchTest.java:91)
     [java]     at com.osm.jsp.SimpleSearchTest.testSimpleSearchClassComboBox(SimpleSearchTest.java:102)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [java]     at com.osm.WMTestCase.runTest(WMTestCase.java:550)
     [java]     at com.osm.ReportingTestCase.runBare(ReportingTestCase.java:127)
     [java]     at com.osm.webservices.legacy.WebServiceTestCase.runBare(WebServiceTestCase.java:313)
     [java]     at com.osm.ReportingTestCase.run(ReportingTestCase.java:325)
     [java]     at com.osm.WMTestSuite.runTest(WMTestSuite.java:214)
     [java]     at com.osm.WMTestSuite.run(WMTestSuite.java:209)
     [java]     at com.osm.WMTestSuite.runTest(WMTestSuite.java:214)
     [java]     at com.osm.WMTestSuite.run(WMTestSuite.java:209)
     [java]     at com.osm.WMTestSuite.runTest(WMTestSuite.java:214)
     [java]     at com.osm.WMTestSuite.run(WMTestSuite.java:209)
     [java]     at com.osm.jsp.UnitTests.main(UnitTests.java:30)
  

我的蚂蚁脚本在路径中设置了jar:

<path id="project.classpath.common">
    <pathelement location="${basedir}/tools/anttools/dist/anttools.jar"/>
    <fileset dir="jar">
      <include name="**/*.jar"/>
      <exclude name="WorkManager.jar"/>
    </fileset>
    <fileset dir="${basedir}/windchill/adapter/9.1/jar">
      <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${basedir}/tools/htmlunit-2.8/lib">
      <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${basedir}/tools/junit-4.8.2/lib">
      <include name="**/*.jar"/>
    </fileset>
    <fileset dir="tools/leakdetection/java/dist/">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="tools/sqljdbc/lib/">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${basedir}/tools/clover/lib">
      <include name="**/*.jar"/>
    </fileset>
    <pathelement location="${basedir}/OSMWebServices/build/web/WEB-INF/classes"/>
    <pathelement location="${basedir}/OSMWebServices/build/test/classes"/>
  </path>
  

这里的WorkManager是我们的应用程序jar成功的jar   在JDK 1.8中编译。

     

SimpleSearchTest类中的示例java方法:

public void testSimpleSearchClassComboBox() throws Exception {
        System.out.println("Inside  testSimpleSearchClassComboBox ");

        HtmlForm form = getHtmlForm();
        System.out.println("After  HtmlForm ");
        assertEquals("parsm 0 should be search.value", "search.val",
            form.getInputByName("search.val").getNameAttribute());
        System.out.println("After  form.getInputByName() ");

        final List<HtmlSelect> classes = form.getSelectsByName("search.class");
        System.out.println("After  form.getSelectsByName() ");

        final List<HtmlOption> options = classes.get(0).getOptions();
        System.out.println("After  HtmlOption ");
        assertEquals("Should have 4 classes", 4, options.size());

        assertEquals("search class should be",
            MessageCatalogUtil.getInstance().getMessage("awm_stda", 258, "MODEL_3D", Locale.getDefault()),
            options.get(0).getText());
        assertEquals("search class should be",
            MessageCatalogUtil.getInstance().getMessage("awm_stda", 251, "MASTERDATA", Locale.getDefault()),
            options.get(1).getText());
        assertEquals("search class should be",
            MessageCatalogUtil.getInstance().getMessage("awm_stda", 254, "DRAWING_2D", Locale.getDefault()),
            options.get(2).getText());
        assertEquals("search class should be",
            MessageCatalogUtil.getInstance().getMessage("awm_stda", 261, "PACKAGE_3D", Locale.getDefault()),
            options.get(3).getText());
    }
  

我没有看到这可能重复,因为我没有运行它   目前在任何网络服务器中。我试图通过测试用例运行它   提到所需的罐子。在这种情况下请善解释   以及需要升级的内容。我甚至没有通过它   netbeans或eclipse IDE。我通过命令提示符运行它   它会调用我的测试用例。请让我知道我能做些什么   在这种情况下考虑一下。

1 个答案:

答案 0 :(得分:0)

我在jboss-5.1.0.GA和jboss-eap-5.2中解决了这个问题,该系统需要在两个平台上都可以运行。您需要替换目录 /server/default/deploy/jbossweb.sar 中的文件 jasper-jdt.jar ecj-4.3.1.jar 的jboss的“ strong”,并将其重命名为 jasper-jdt.jar >。 (观察:在应用更改之前备份原始jasper-jdt.jar)。

因此:将 jasper-jdt.jar 替换为 ecj-4.3.1.jar 重命名ecj- 4.3.1.jar到jasper-jdt.jar。