把需要的Jar包放到编译的环境变量里就可以了

解决方案 »

  1.   

    什么jar?
    哦,对了,我还没装Struts,是不是要装这个东东啊?另外问下,装了j2eesdk后,是不是classpath里只要设j2eesdk里是jdk目录下的lib就行了,
    而不要了原来j2seSDK的那个lib了?
    谢谢
      

  2.   

    com/sun/enterprise/tools/packager/Ma这个东西是哪个Jar包下的就把那个Jar放到编译环境里
    后面说的jdk环境没问题
      

  3.   

    把你的build.xml贴出来,还有你的目录结构。分析一下就知道原因了。
      

  4.   

    是com/sun/enterprise/tools/packager/Main吧?
    怎么看这个东西是哪个jar下的呢?
      

  5.   

    - <project name="j2ee-tutorial-app" default="about" basedir=".">
    - <target name="init">
      <tstamp /> 
      <property name="build" value="build" /> 
      <property name="dist" value="dist" /> 
      <property name="src" value="src" /> 
      <property name="sql" value="sql" /> 
      <property environment="myenv" /> 
      <property name="cpath" value=".:${myenv.J2EE_HOME}/lib/j2ee.jar:./src:jar/tx-ejb.jar:jar/account-ejb.jar:jar/customer-ejb.jar" /> 
      <property name="packager" value="com.sun.enterprise.tools.packager.Main" /> 
      <property name="pack-jvmargs" value="-Xmx128m" /> 
      <property name="pack-path" value=".:${myenv.J2EE_HOME}\lib\j2ee.jar:${myenv.J2EE_HOME}\lib\locale" /> 
      <property name="app-jars" value="jar/account-ejb.jar:jar/customer-ejb.jar:jar/tx-ejb.jar:jar/web-client.war:jar/app-client.jar" /> 
      <property name="util-files" value="com/sun/ebank/util" /> 
      <property name="ejb-exception-files" value="com/sun/ebank/ejb/exception" /> 
      <property name="account-ejb-files" value="com/sun/ebank/ejb/account:com/sun/ebank/ejb/customer/Customer.class:com/sun/ebank/ejb/customer/CustomerHome.class" /> 
      <property name="customer-ejb-files" value="com/sun/ebank/ejb/customer" /> 
      <property name="tx-ejb-files" value="com/sun/ebank/ejb/tx:com/sun/ebank/ejb/account/Account.class:com/sun/ebank/ejb/account/AccountHome.class" /> 
      <property name="ac-files" value="com/sun/ebank/appclient:AdminMessages.properties:AdminMessages_es.properties" /> 
      <property name="cloud-lib" value="${myenv.J2EE_HOME}/lib/cloudscape" /> 
      <property name="system-lib" value="${myenv.J2EE_HOME}/lib/system" /> 
      <property name="cloud-path" value=".:${cloud-lib}/cloudclient.jar:${cloud-lib}/RmiJdbc.jar:${system-lib}/cloudutil.jar:${system-lib}/cloudscape.jar" /> 
      <property name="cloud-jvmargs" value="-ms16m -mx32m -Dij.connection.CloudscapeDB=jdbc:rmi://localhost:1099/jdbc:cloudscape:CloudscapeDB;create=true -Dcloudscape.system.home=${myenv.J2EE_HOME}\cloudscape" /> 
      </target>
    - <target name="prepare" depends="init">
      <mkdir dir="${build}" /> 
      </target>
      <target name="all" depends="package-ejb,package-web,setruntime-ac,assemble-app,setruntime-app" /> 
    - <target name="compile-exception" depends="prepare">
      <javac srcdir="${src}" destdir="${build}" includes="**/exception/*" classpath="${cpath}" /> 
      </target>
    - <target name="compile-detail" depends="prepare">
      <javac srcdir="${src}" destdir="${build}" includes="**/util/*Details.java" classpath="${cpath}" /> 
      </target>
    - <target name="compile-interface" depends="compile-detail,compile-exception">
      <javac srcdir="${src}" destdir="${build}" includes="**/ejb/**/**" excludes="**/ejb/**/*Bean*,**/ejb/exception/***,**/ejb/test/**" classpath="${cpath}" /> 
      </target>
    - <target name="compile-util" depends="compile-interface">
      <javac srcdir="${src}" destdir="${build}" includes="**/ebank/util/**" classpath="${cpath}" /> 
      </target>
      

  6.   

    - <target name="compile-ejb" depends="compile-util">
      <javac srcdir="${src}" destdir="${build}" includes="**/ebank/ejb/**/*Bean*" classpath="${cpath}" /> 
      </target>
    - <target name="package-account" depends="compile-ejb">
      <delete file="jar/account-ejb.jar" /> 
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-ejbJar ${build} ${account-ejb-files}:${ejb-exception-files}:${util-files} dd/account-ejb.xml jar/account-ejb.jar" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="package-customer" depends="compile-ejb">
      <delete file="jar/customer-ejb.jar" /> 
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-ejbJar ${build} ${customer-ejb-files}:${ejb-exception-files}:${util-files} dd/customer-ejb.xml jar/customer-ejb.jar" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="package-tx" depends="compile-ejb">
      <delete file="jar/tx-ejb.jar" /> 
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-ejbJar ${build} ${tx-ejb-files}:${ejb-exception-files}:${util-files} dd/tx-ejb.xml jar/tx-ejb.jar" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
      <target name="package-ejb" depends="package-account,package-customer,package-tx" /> 
    - <target name="compile-web" depends="prepare">
      <javac srcdir="${src}" destdir="${build}" includes="com/**/web/**" classpath="${cpath}" /> 
      </target>
    - <target name="package-web" depends="compile-web">
      <delete file="jar/web-client.war" /> 
    - <war warfile="jar/web-client.war" webxml="dd/web.xml">
    - <fileset dir="${src}/web">
      <include name="*.jsp" /> 
      <include name="images/*.gif" /> 
      </fileset>
    - <webinf dir="${src}/web">
      <include name="*.tld" /> 
      <exclude name="*.jsp" /> 
      <exclude name="*.txt" /> 
      <exclude name="images/**" /> 
      </webinf>
    - <webinf dir="jar">
      <include name="*.tld" /> 
      </webinf>
    - <lib dir="jar">
      <include name="struts.jar" /> 
      </lib>
    - <classes dir="${build}">
      <include name="**/*.class" /> 
      <exclude name="com/sun/ebank/appclient/**" /> 
      <exclude name="com/sun/ebank/ejb/**" /> 
      <exclude name="com/sun/ebank/util/**" /> 
      </classes>
    - <classes dir="${src}/web">
      <include name="*.properties" /> 
      </classes>
      </war>
      </target>
    - <target name="compile-ac" depends="compile-util">
      <javac srcdir="${src}" destdir="${build}" includes="**/appclient/**" classpath="${cpath}" /> 
      </target>
    - <target name="package-ac" depends="compile-ac">
    - <copy todir="${build}">
    - <fileset dir="${src}">
      <include name="**/appclient/*.properties" /> 
      </fileset>
      <mapper type="flatten" /> 
      </copy>
      <delete file="jar/app-client.jar" /> 
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-applicationClient ${build} ${ac-files} com.sun.ebank.appclient.BankAdmin dd/app-client.xml jar/app-client.jar" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="setruntime-ac" depends="package-ac">
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-setRuntime jar/app-client.jar dd/runtime-ac.xml" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="assemble-app" depends="init">
      <delete file="jar/DukesBankApp.ear" /> 
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-enterpriseArchive ${app-jars} DukesBankApp jar/DukesBankApp.ear" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="setruntime-app" depends="init">
    - <java classname="${packager}" fork="yes">
      <jvmarg line="${pack-jvmargs}" /> 
      <arg line="-setRuntime jar/DukesBankApp.ear dd/runtime-app.xml" /> 
      <classpath path="${pack-path}" /> 
      </java>
      </target>
    - <target name="db-create-table" depends="init">
    - <java classname="COM.cloudscape.tools.ij" fork="yes">
      <jvmarg line="${cloud-jvmargs}" /> 
      <arg value="${sql}/create-table.sql" /> 
      <classpath path="${cloud-path}" /> 
      </java>
      </target>
    - <target name="db-insert" depends="init">
    - <java classname="COM.cloudscape.tools.ij" fork="yes">
      <jvmarg line="${cloud-jvmargs}" /> 
      <arg value="${sql}/insert.sql" /> 
      <classpath path="${cloud-path}" /> 
      </java>
      </target>
    - <target name="db-list" depends="init">
    - <java classname="COM.cloudscape.tools.ij" fork="yes">
      <jvmarg line="${cloud-jvmargs}" /> 
      <arg value="${sql}/listAccount.sql" /> 
      <classpath path="${cloud-path}" /> 
      </java>
      </target>
    - <target name="db-delete" depends="init">
    - <java classname="COM.cloudscape.tools.ij" fork="yes">
      <jvmarg line="${cloud-jvmargs}" /> 
      <arg value="${sql}/delete.sql" /> 
      <classpath path="${cloud-path}" /> 
      </java>
      </target>
    - <target name="db-reset-key" depends="init">
    - <java classname="COM.cloudscape.tools.ij" fork="yes">
      <jvmarg line="${cloud-jvmargs}" /> 
      <arg value="${sql}/reset-key.sql" /> 
      <classpath path="${cloud-path}" /> 
      </java>
      </target>
    - <target name="about">
      <echo message="Main targets for the Duke's Bank application:" /> 
      <echo message="" /> 
      <echo message="EJB" /> 
      <echo message="compile-ejb" /> 
      <echo message="package-ejb" /> 
      <echo message="" /> 
      <echo message="Web" /> 
      <echo message="compile-web" /> 
      <echo message="package-web" /> 
      <echo message="" /> 
      <echo message="App Client" /> 
      <echo message="compile-ac" /> 
      <echo message="package-ac" /> 
      <echo message="setruntime-ac" /> 
      <echo message="" /> 
      <echo message="J2EE Application" /> 
      <echo message="assemble-app" /> 
      <echo message="setruntime-app" /> 
      <echo message="" /> 
      <echo message="Database" /> 
      <echo message="db-create-table" /> 
      <echo message="db-insert" /> 
      </target>
    - <target name="clean" depends="init">
      <delete dir="${build}" /> 
      </target>
      </project>
      

  7.   

    很简单是你的-classpath 里没有包括所需的内裤。
      

  8.   

    是什么类库呢?是指系统的还是这个bank应用的?我觉得会不会和这个有关?
      <property name="packager" value="com.sun.enterprise.tools.packager.Main" /> 
      <property name="pack-path" value=".:${myenv.J2EE_HOME}\lib\j2ee.jar:${myenv.J2EE_HOME}\lib\locale" /> 这两个是什么意思?
      

  9.   

    指BANK应用的。 <property name="packager" value="com.sun.enterprise.tools.packager.Main" /> 
    ——定义了packager的变量。
    没错就是和这个有关。
    <java classname="${packager}" fork="yes">
    这里面需要加上classpath的属性定义。classpath里要指明packager.Main所在的Class或者JAR包。至于在哪个JAR里你可以用资源管理器搜索一下。
      

  10.   

    至于在哪个JAR里你可以用资源管理器搜索一下。
    -------------------------------------------请问如何搜索呀?资源管理器里只看到文件名吧?
      

  11.   

    晕!
    这都不会用呀,搜索文件名你就填*.jar,包含文字你就填com.sun.enterprise.tools.packager不就得了。
    再晕~~~
      

  12.   

    呵呵,我不知道jar还能查文本的。
    但只查到有com.sun.enterprise.tools,在d:\sun\appserver\lib\appserv-assemblytool.jar中
    是com.sun.enterprise.tools.deployment...
    com.sun.enterprise.tools.common...
    而没有.package,我把d:\sun\appserver\lib加在classpath中也是一样报先前的错。难道真是版本问题吗?
      

  13.   

    下装个1.3的看看吧
    http://java.sun.com/j2se/1.3/
    http://java.sun.com/j2ee/1.3/
      

  14.   

    com/sun/enterprise/tools/packager/Ma这个东西是哪个Jar包下的就把那个Jar放到编译环境里
    后面说的jdk环境没问题
      

  15.   

    看来是版本的问题,我装了1.3就好了,但查了一下也没有哪个jar里有这个class信息。谢谢大家,给分了