`
zhang_xzhi_xjtu
  • 浏览: 538323 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jar的混乱

阅读更多
使用了一阵.net之后回到java上,发现jar包的维护真可以用梦魇来形容。一个class可以有n个jar包,实现的功能差不多,但是又有可能有一些细微的偏差。包含该class的jar有可能是满足当前需要的一个小jar包,也有可能不仅包含该class及其相关的class,还有一堆其他功能的class堆积在这个大的jar包里。有可能当前好好的,以后加入新功能时就有问题了,因为classloader误用了大jar包的同名class。另外,如果不是很熟悉classpath,有可能build时好好的,运行时就有问题了。

java的开放性太高了,任何人,任何组织只要高兴就可以搞一堆jar出来,可以jar名相同内容近似或不同,可以jar名不同内容一样等等等等等等等。基本上一个常用的class都是有n多实现的。其实反转域名的namespace加上classname是一个挺好的方案,可惜没有强制的规定如何打jar包。既一个全名的class在一个基本jar里,不可能存在其他的基本jar里面有同名的class,为了性能或者其他一些情况,可以有一些组合jar,组合jar是基本jar的聚集,不允许只包含一个基本jar的一部分,一个组合jar是一组基本jar的聚集,并且该范围不可改变。

java的jar引用问题。最近用maven,有时候挺不爽的。maven的repo声称解决了jar的管理问题。但是我觉得还是不够的。java的jar往好里说,是很灵活的,基本上想用什么class都可以自己设定,实在不行还可以自定义classloader。往不好里说,完全是自己给自己找麻烦,一个系统上jre,jdk现在都是几套几套的,里面的jar没有重复?估计没有几个人因为空间不够愿意和其他程序共享自己依赖的jar包。所以maven的一个版本的jar只有一个copy到底好不好还是有待商榷的。

倒是.net的模式我觉得挺好的,build是把该dll依赖的dll全部copy到本地目录,除了GAC之外,这样虽然浪费一些空间,但是很整洁,一眼就知道,程序在用什么jar,而且避免了很多classpath设置的错误,以及jar次序的错误。
1
0
分享到:
评论
2 楼 zhang_xzhi_xjtu 2009-05-26  
简单的说我用java比.net时间长,而且更喜欢java一些。.net当然没有java开放了,文中已经提到。
这个不是比较java和.net的优劣,而且探讨一下jar本身的问题。
1 楼 xwkp2008 2009-05-26  
只能说因为你用.net习惯了,.net具备了java的开放性了吗?

相关推荐

    tomcat-juli.jar和tomcat-juli-adapters.jar

    值得注意的是,`tomcat-juli.jar`和`tomcat-juli-adapters.jar`的使用需要谨慎,因为错误的配置可能会导致日志输出混乱或者性能下降。例如,过度的日志记录会占用大量的磁盘空间,甚至影响服务器性能。因此,明智的...

    httpunit.jar tidy.jar

    这对于处理来自不同来源的混乱或不完整的网页数据尤其有用。Tidy.jar在处理嵌套的标签、缺失的结束标签以及不正确的属性语法等方面表现出色,可以帮助开发者在处理HTML内容时保持代码整洁。 在不同的JDK环境中,...

    dex2jar-2.0和2.1合集

    然而,需要注意的是,由于dex2jar反编译的性质,生成的.java源代码通常会比较混乱,难以阅读。原始的注释和变量名通常会丢失,因为这些信息在.dex文件中并不直接存在。此外,由于Dalvik字节码和Java字节码之间的一些...

    java 编译 jar 包

    这部分内容较为混乱,似乎是从命令行界面复制过来的一部分,包含了`jar`命令的一些参数。下面将对这些参数进行详细解读: 1. **基本命令格式**: - `jar {option} [file] [manifest] [files]` 其中: - `{...

    jar包大乱炖

    当一个项目引用了多个jar包时,可能存在版本冲突、依赖混乱等问题,这需要开发者进行精细管理,确保正确引入并排除无用或冲突的库。 在Java开发中,遇到“程序包不存在”的错误通常是因为缺少了对应的jar包或者路径...

    htmlparser.jar 及其相关的jar包

    它不仅支持标准的 HTML 元素,还能够处理非标准的、不规范的 HTML 代码,这在处理来自不同网站的混乱 HTML 时特别有用。HTMLParser 提供了多种解析模式,如事件驱动的 SAX(Simple API for XML)风格和 DOM...

    java导入jar包图解.pdf

    这种方式虽然简单,但是不建议使用,因为它可能会导致项目中的 jar 包版本混乱,引起项目的不稳定。 第二种方式 第二种方式是使用 Eclipse 等 IDE 工具来导入 jar 包。具体步骤如下: 1. 打开 Eclipse,选择项目...

    reset.jar解析

    在日常使用过程中,开发者可能会遇到配置混乱、插件冲突或者设置丢失等问题,这时候,重置IDE设置就显得尤为重要。 reset.jar文件很可能是一个自定义的或由社区提供的工具,用于快速重置IntelliJ IDEA的配置。这...

    dex2jar.rar

    因此,对于混淆过的DEX文件,反编译结果可能会显得混乱且难以理解。 此外,dex2jar也有其局限性。它不支持最新的DEX格式,比如Android的ART环境下的OAT或ODX文件。这些文件需要使用其他的工具,如 JADX 或 Frida,...

    maven的本地仓库jar包

    此外,如果本地仓库出现问题,例如文件损坏或版本混乱,可能需要完全清空并重新下载。可以删除`~/.m2/repository`目录(Windows系统下为 `%USERPROFILE%\.m2\repository`),然后再次构建项目,Maven会自动下载所有...

    java日志jar包

    Commons Logging的目的是解决Java中的“日志混乱”问题,即不同的库可能依赖于不同的日志框架,导致应用中存在多个日志系统的冲突。通过使用Commons Logging,开发者可以在运行时指定实际的日志实现,如log4j或Java...

    Maven搭建Kafka Java开发环境需要的jar包

    手动将jar包解压到特定目录可能会导致版本冲突或管理混乱。正确的方式是通过`pom.xml`文件中的依赖配置,让Maven自动处理。 关于标签"Kafka",Kafka是一个高性能、可扩展的开源消息系统,它支持发布订阅模型和生产...

    小颖jar反编译器.rar

    3. **代码格式化**:反编译出的源代码可能格式混乱,一个良好的反编译器会尽可能保持代码的可读性,包括正确的缩进和注释。 4. **搜索与导出**:用户可以搜索特定的类或方法,并导出反编译后的源代码为独立的.java...

    反编译jar包 jd-gui-windows-1.4.0

    4. **源代码折叠**:支持代码折叠功能,帮助用户专注于关键部分,减少代码的视觉混乱。 5. **兼容性**:jd-gui支持Java的各种版本,包括JDK 1.4及更高版本的.jar文件。 使用jd-gui进行反编译的步骤通常包括以下几步...

    mssql-jdbc-7.4.1.jre8.jar

    这可能是因为WebSphere或应用配置中,指定的驱动路径是当前目录,如果有多个JDBC驱动,可能会导致版本冲突或SSL配置混乱。SSL错误通常涉及到安全套接层(SSL)或其后续版本TLS,用于加密数据库连接,确保数据传输的...

    jsp有关用到的jar包.rar

    【标题】:“jsp有关用到的jar包.rar”这一压缩包文件主要包含了在开发Java Server Pages(JSP)时可能需要用到的外部...同时,合理地管理这些依赖项,如使用Maven或Gradle构建工具,可以帮助避免版本冲突和依赖混乱。

    html转pdf的core-renderer.jar支持中文自动换行

    `core-renderer.jar` 实现了对中文字符的智能识别和换行处理,确保在PDF中不出现文字溢出或者排版混乱的情况,提高了阅读体验。 3. **CSS样式支持**: CSS(Cascading Style Sheets)是用于控制网页元素外观和布局的...

    log4j相关jar包

    例如,如果项目原本使用log4j,但希望迁移到SLF4J或log4j2,桥接包可以提供兼容性,避免日志混乱。`log4j-slf4j-impl.jar`是将log4j的调用桥接到SLF4J的实现,而`slf4j-log4j12.jar`则相反,将SLF4J调用桥接到log4j...

    java 串口开发jar包

    - 多线程环境下,串口操作需要妥善处理同步问题,避免数据混乱。 在实际开发中,除了`comm-2.0.jar`,还可以考虑使用其他第三方库,如RXTX、JSSC等,它们提供了更丰富的功能和更好的错误处理机制。不过,对于初学者...

    c3p0-0.9.1.2源码及jar包

    4. **线程安全**:C3P0的设计确保了多线程环境下的安全性,多个线程可以同时获取和释放连接,而不会引起数据混乱。 5. **扩展性**:C3P0提供了丰富的API,允许开发者自定义连接池的行为,如设置连接属性、监听器等...

Global site tag (gtag.js) - Google Analytics