【问题标题】:weblogic.appc command failed using ANT script in WebLogic Server 10.3.5.0在 WebLogic Server 10.3.5.0 中使用 ANT 脚本的 weblogic.appc 命令失败
【发布时间】:2012-09-13 07:36:25
【问题描述】:

我正在将应用程序从 weblogic 8.1 迁移到 weblogic 10.3.5 版本。 通过ant脚本构建应用程序时;我收到以下错误:-

weblogic.appc.run:

[java] Usage: java weblogic.appc [options] <ear, jar, war or rar file or directory> 
[java] 
[java] where options include: 
[java] -help Print the standard usage message. 
[java] -version Print version information. 
[java] -output <file> Specifies an alternate output archive or 
[java] directory. If not set, output will be 
[java] placed in the source archive or directory. 
[java] -plan <file> Specifies an optional deployment plan. 
[java] -forceGeneration Force generation of EJB and JSP classes. 
[java] Without this flag the classes may not be 
[java] regenerated if it is determined to be 
[java] unnecessary. 
[java] -quiet Turns off output except for errors 
[java] -lineNumbers Add JSP line numbers to generated class 
[java] files to aid in debugging. 
[java] -library <file> Comma-separated list of libraries. Each 
[java] library may optionally set its name and 
[java] versions, if not already set in its 
[java] manifest, using the following syntax: <file> 
[java] [@name=<string>@libspecver=<version> 
[java] @libimplver=<version|string>] 
[java] -librarydir <dir> Registers all files in specified directory 
[java] as libraries. 
[java] -writeInferredDescriptors Write out the descriptors with inferred 
[java] information including annotations. 
[java] -manifest <file> Include manifest information from specified 
[java] manifest file. 
[java] -clientJarOutputDir <dir> Specifies a directory to put generated 
[java] client jars. 
[java] Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/j2ee/J2EELogger 
[java] -keepgenerated Keep the generated .java files. 
[java] -verbose Compile with verbose output. 
[java] -classpath <path> Classpath to use. 
[java] -source <source> Source version. 
[java] -target <target> Target version. 
[java] -advanced Print advanced usage options. 
[java] 
[java] at weblogic.application.compiler.Appc.runBody(Appc.java:205) 
[java] at weblogic.utils.compiler.Tool.run(Tool.java:158) 
[java] at weblogic.utils.compiler.Tool.run(Tool.java:115) 
[java] at weblogic.application.compiler.Appc.main(Appc.java:262) 
[java] at weblogic.appc.main(appc.java:14) 
[java] Caused by: java.lang.ClassNotFoundException: weblogic.j2ee.J2EELogger 
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
[java] at java.security.AccessController.doPrivileged(Native Method) 
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
[java] ... 5 more 

下面是我正在运行的 ANT 脚本。

<java classname="weblogic.appc" failonerror="true" fork="true" maxmemory="512m"> 
  <arg value="-disableHotCodeGen"/>
  <arg line="-verbose"/>
  <arg line="${weblogic.arg.line.compiler}"/>
  <arg line="-compilerclass com.sun.tools.javac.Main"/>
  <arg line="${weblogic.appc.options}"/>
  <arg value="${compile.dir}/${ejb.domain}-ejbc.jar"/>
  <arg value="${project.dir}/src/java"/>
  <arg value="${compile.dir}/ejb/${ejb.domain}"/>
  <classpath>
    <path refid="weblogic.classpath"/>
    <path refid="project.classpath"/>
    <fileset dir="${java.home}/../lib" includes="tools.jar"/>
  </classpath>
</java> 

即使我找不到 java.lang.NoClassDefFoundError: weblogic/j2ee/J2EELogger 。哪个罐子支持这个?我也正确设置了 PATH 和 CLASSPATH。

如果我需要更多信息,请告诉我。

【问题讨论】:

    标签: weblogic weblogic-10.x


    【解决方案1】:

    简而言之,确保您的 weblogic.classpath 变量中有 /wlserver_10.3/server/lib/weblogic.jar

    未加载的类来自/modules/com.oracle.core.weblogic.msgcat_1.1.0.0.jar。这应该通过/wlserver_10.3/server/lib/weblogic.jar 中的 MANIFEST.MF 文件导入。假设您的weblogic.classpath 中有weblogic.jar,那么应该加载weblogic.j2ee.J2EELogger 类。

    weblogic.jar 加载 /modules/features/weblogic.server.modules_10.3.5.0.jar 进而通过它自己的 MANIFEST.MF 加载 /modules/com.oracle.core.weblogic.msgcat_1.1.0.0.jar

    您的 ant 配置中还有多个 &lt;arg line=""&gt; 标签。您需要修改这些内容。

    <arg line="-disableHotCodeGen -verbose -compilerclass com.sun.tools.javac.Main ${weblogic.appc.options} ${compile.dir}/${ejb.domain}-ejbc.jar ${project.dir}/src/java ${compile.dir}/ejb/${ejb.domain}">
    

    下面的另一个例子是我当前如何在我的 ant 构建中执行 appc。

    <target name="appc" depends="compile,jar">
      <java classname="weblogic.appc" fork="yes" jvm="${bea.java.home}/bin/java" maxmemory="1G" failonerror="true">
        <arg line="${archive.jarfile} -J-Xmx1g"/>
        <classpath>
          <pathelement path="${container.cp};${server.additional.classpath}"/>
          <pathelement path="${archive.jarfile}"/>
        </classpath>
      </java>
    </target>
    

    另外,使用-v 开关运行ant 以查看正在发出的命令,它应该有助于找到您的问题。

    【讨论】:

    • 谢谢!!! weblogic.j2ee.J2EELogger 在下面的 jar com.bea.core.logging_1.8.0.0.jar 和 com.oracle.core.weblogic.msgcat_1.1.0.0.jar 上找到,但在此之后我遇到了另一个构建问题。 [java] [java] [J2EE:160128]错误:不正确的 appc 命令行。给出了太多的论据。除了支持的选项外,命令行只接受一个参数,即源文件。
    • 是的,我现在也看到了。将所有程序参数放入单个
    • 嗨,我尝试了您指定的单个 arg,但在使用 appc 编译器时仍然遇到相同的错误:[J2EE:160128]错误:不正确的 appc 命令行。给出了太多的论据。除了支持的选项外,命令行只接受一个参数,即源文件。
    • 我在 Ant 中添加了一个工作 appc 命令的示例,我在现有构建中使用该命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2011-06-28
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多