我们是否正在寻找类似于dll hell的java平台的jar地狱?

时间:2011-05-24 15:05:04

标签: java hibernate spring jpa dependency-management

昨晚我试图用一个简单的教程来构建一个使用堆栈的应用程序 - Spring(2.5)+ JPA(1.0)+ Hibernate(第一次下载,所以不知道使用哪个版本)。不幸的是,我不想使用Maven作为目标参与者在ANT构建。像往常一样点击搜索引擎并以某种方式获得appcontext,persistence.xml和java类中的步骤。在我开始获得所需库的那一刻,我迷失在JAR地狱中。幸运的是,Spring方面没有太大的问题,因为我的Spring 2.5.6将所有依赖JAR打包在一起。

当谈到休眠时,我不知道所有的Jars都包含在第一位。在接下来的挑战中,不知道每个版本要添加哪个版本。

最后我把整个事情搞定了,但除非我被Maven天堂带走,否则再次进入这个JAR地狱真是太可怕了。

对于曾经喜欢Java的传统Java程序员而言,对于我的代码正在进行的操作非常透明,对于许多拦截器和编织来说,它变得越来越复杂。

我在思考过程中是否正确?

3 个答案:

答案 0 :(得分:9)

使用Ant时,您仍然可以进行依赖关系管理,使用Ivy。 有关您想要使用的堆栈的详细信息,请参阅详细的教程here。 (不包括Hibernate,但我想你可以找到如何快速添加它)

还有一件事,如果你指的是具有完整的Spring 2.5.6软件包的spring.jar,我强烈建议你不要使用它,你可能不需要超过20%的库。 (花点时间确切地发现你需要哪些库,只选择那些库。)

另外,考虑使用Spring 3以及Hibernate,如果你可以自由选择版本,我会选择最新版本。

答案 1 :(得分:1)

之前我曾使用过其他JPA实现,但今年我第一次使用Hibernate。当然,就jar依赖性而言,它比其他人更复杂,但在Getting Started Guide,在Chapter 1中,在Obtaining Hibernate下,我找到了我需要哪些罐子和原因的详细信息。

我后来遇到了jar地狱问题,不是因为不知道使用哪个罐子,而是因为我们处于一个非常大的问题,其他子项目已经在使用旧版本的Hibernate类,这导致我在运行时遇到很多麻烦,我花了几天的时间来诊断和修复。

我认为这暂时是现实,像Maven这样的工具或像OSGi这样的框架试图缓解这个问题。

或许我们最大的希望是Project Jigsaw打算将来成为JDK 8的一部分,并试图解决我们目前拥有的Java模块化问题。它就像一个带有类固醇的OSGi,并且内置在JDK中。

但在此之前,我所能告诉你的只是威斯顿丘吉尔的一句名言

  

如果你正在经历地狱,继续   去

答案 2 :(得分:0)

这是Grails解决的问题之一 - 通过捆绑一组特定的罐子(Spring,Hibernate等),这些罐子一起工作并随着Grails的发展升级这些罐子。