maven 为什么玻璃鱼认不出这个jar?

xdnvmnnf  于 2022-10-26  发布在  Maven
关注(0)|答案(3)|浏览(148)

我想在终端中使用命令asadmin deploy testapp-1.0-SNAPSHOT.jar在GlassFish 4上部署一个JAR。JAR的完整布局是

/META-INF/MANIFEST.MF
/META-INF/maven/com.test/testapp/pom.properties
/META-INF/maven/com.test/testapp/pom.xml
/com/test/testapp/*.class

但每次我收到错误

remote failure: Archive type of jar was not recognized
Command deploy failed.

我用Maven编译并打包了JAR。
先谢谢你。

goqiplq2

goqiplq21#

似乎只有包含企业Java Bean的单独JAR才能被部署。
有两个选项可以使类成为企业Java Bean。
1.使用组件定义来自包javax.ejb的注解来注解类(例如javax.ejb.Stateless)
1.在META-INF目录中打包的部署描述符ejb-jar.xml(如果使用GlassFish,则为glassfish-ejb-jar.xml)中指定Enterprise Java Bean,如5.2 Packaging Enterprise Beans所示
这是取自Simple Stateless with Descriptor的一个简单示例

<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
         version="3.0">
  <enterprise-beans>
    <session>
      <ejb-name>CalculatorImpl</ejb-name>
      <business-local>org.superbiz.calculator.CalculatorLocal</business-local>
      <business-remote>org.superbiz.calculator.CalculatorRemote</business-remote>
      <ejb-class>org.superbiz.calculator.CalculatorImpl</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>
    </session>
  </enterprise-beans>
</ejb-jar>
yvfmudvl

yvfmudvl2#

您不会将JAR文件部署到Java EE容器中。您希望将其打包到WAR或EAR文件中,该文件的WEB-INF/lib目录中可能有JAR文件。

gajydyqb

gajydyqb3#

this post一样,替换代码中的lambda表达式,然后重试。会奏效的,我相信。

相关问题