有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jakarta ee如何处理Java(ee)中的冲突依赖项

我正在JavaEE6平台上开发一个企业应用程序。IDE是NetBeans 7.2,应用服务器是GlassFish 3.1.2.2

业务逻辑必须使用库(具体来说是HBase RDF)来处理其核心中的某些任务。最初的HBase RDF代码依赖于许多包,我相信Glassfish已经使用了这些包的较新版本。例如,我可以看到javax。xml,javax。激活,com。太阳jersey和类似的包已经包含在jar文件中

尽管我以前开发过不那么简单的JavaEE应用程序,但在开发应用程序时,我遇到了无数的麻烦,这些麻烦可能与此相关,也可能与此无关。从我在web上读到的内容,包括几十个stackoverflow问题和bug跟踪系统,我想如果我能够将原始库(HBase RDF)及其所有依赖项打包为一个完整的jar文件,并防止它们直接包含在项目中,我或许能够摆脱其中的一些麻烦

我的第一个问题是,关于问题的原因,我说得对吗?这是我问题的根源吗?我想答案是肯定的,因为我已经通过从类路径中删除JAXB和Xerces JAR解决了我的一个问题,幸运的是,我必须使用的Hbase RDF的那些部分没有使用它们

第二个问题是,如果我对上一个问题的看法是正确的,我该怎么做?如何限制这些库仅由一个库(Hbase RDF)使用


注意:可以说构建过程完成时没有任何问题,但我在部署和运行项目时面临两个主要问题。首先,该应用程序成功地部署在我的本地Glassfish实例上,该实例与netbeans一起安装,但相同。ear包无法部署到另一个相同版本的实例和服务器上。日志文件不包含任何有助于查找问题原因的内容。错误与this非常相似,但建议的解决方案不起作用。第二个问题与this非常相似,同样,我尝试了每一个提议的解决方案,但没有成功。有趣的是,web模块中的web服务成功地调用了EJB,但JSF facelet索引没有成功。html无法运行


共 (1) 个答案

  1. # 1 楼答案

    我不确定你是担心构建过程还是部署
    因为对于部署,如果您有一个依赖于已部署库的不同版本的库,那么如果不使用OSGi(不能让库的两个版本都使用相同的类加载器),这是不可能工作的
    您是否尝试过完全删除依赖库,只使用较新版本
    如果您唯一的依赖项是java的JAXBxml包,那么您可能很幸运