`
hbkh2000
  • 浏览: 203834 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何方便的指定Java程序运行所需要的所有jar包

阅读更多

 初学Java的人经常遇到的一个问题是:如果一个程序依赖某个文件夹下的一堆jar包,那么启动它的时候就需要在java -cp参数后面一个一个的加上jar包的名称,很不方便。

        比如主程序类叫Main,在目录lib下有aaa.jar,bbb.jar,ccc.jar,则需要输入以下命令才能执行:java -cp lib/aaa.jar;lib/bbb.jar;/lib.ccc.jar  Main

        (linux系统下用冒号,windows下用分号)。

        如果jar包少,倒也不是很麻烦,但如果依赖的jar包数量很多的话,一个个的输就比较麻烦了,当然我们也可以借助一些脚本或者Ant来实现自动化,但总觉得杀鸡焉用牛刀,反而把事情弄麻烦了。

我自己是这样解决的:

java -Djava.ext.dirs=./lib -cp ./bin Main    (假设主程序类Mian.class放在bin目录下)

       正如你说看到的,-Djava.ext.dirs起到了关键作用,它将告诉JVM从那里加载一些类,为了方便理解记忆,顺便补充一点ClassLoader的常识:

       Java的类装载模型是一种代理(delegation)模型。当JVM 要求类装载器CL(ClassLoader)装载一个类时,CL首先将这个类装载请求转发给他的父装载器。只有当父装载器没有装载并无法装载这个类时,CL才获得装载这个类的机会。这样, 所有类装载器的代理关系构成了一种树状的关系。树的根是类的根装载器(bootstrap ClassLoader) , 在JVM 中它以"null"表示。除根装载器以外的类装载器有且仅有一个父装载器。在创建一个装载器时, 如果没有显式地给出父装载器, 那么JVM将默认系统装载器为其父装载器。

       根(Bootstrap) 装载器:该装载器没有父装载器,它是JVM实现的一部分,从sun.boot.class.path装载运行时库的核心代码。 
       

       扩展(Extension) 装载器:继承的父装载器为根装载器,不像根装载器可能与运行时的操作系统有关,这个类装载器是用纯Java代码实现的,它从java.ext.dirs (扩展目录)中装载代码。(这一段就是为什么可以通过设置-Djava.ext.dirs来加载一堆jar的原理)

分享到:
评论

相关推荐

    可以直接运行java jar Demo

    运行jar文件时,Java虚拟机(JVM)会加载并执行其中的主类,这个主类通常由manifest文件指定,manifest文件是一个包含元数据的小文本文件,它告诉JVM哪个类应该作为程序的入口点。 描述中提到的“Demo中包括工程的...

    编译运行java带jar包

    4. **运行JAR包** 一旦JAR文件创建完毕,我们可以通过`java`命令运行它,指定 `-jar` 选项和JAR文件的路径。如果MANIFEST.MF正确指定了主类,那么Java会自动执行它。例如: ```bash java -jar myapp.jar ``` ...

    java程序如何打成jar包

    * Class-Path:指定支持库的路径,"."表示程序运行目录,即导出的 JAR 包所在目录。 在准备好 MANIFEST.MF 文件后,需要使用 Eclipse 生成 JAR 文件。首先,右键单击项目名,在弹出菜单中选择“Export”。在弹出的...

    java开发可安装程序exe的JFrame相关jar包.rar

    9. **配置文件**:打包成.exe时,可能需要配置文件来指定Java虚拟机(JVM)参数,如内存设置、类路径等。 10. **发布与分发**:最后,确保发布的.exe文件包含了所有必要的库和资源,并且用户能够在没有Java环境的...

    java语言开发jar包_jar包_java_

    5. **类路径管理**:在Java命令行中,可以使用 `-classpath` 或 `-cp` 参数指定JAR包的位置,使得JVM知道在哪里寻找所需的类。 6. **运行时合并**:通过`-jar`选项,可以指定主类并直接运行JAR文件,如`java -jar ...

    JAVA打包成可运行的JAR程序

    在 Java 开发中,为了方便程序的部署和分发,通常需要将程序打包成可执行的 JAR 文件。在这个过程中,需要注意几个重要的步骤,包括将依赖的 lib 包和配置文件正确地配置,生成 Class-Path 信息,并将其保存到 ...

    关于执行java命令引入外部jar包方法

    完成上述步骤后,即可在任何地方运行依赖于`mysqlJdbc.jar`的Java程序,无需在命令行中指定额外参数。 #### 方法2:使用`-cp`或`-classpath`参数 另一种更为灵活的方法是在执行Java命令时动态指定JAR包位置,即使...

    Java程序打包jar及exe所需文件

    在Java开发过程中,将程序打包成可执行的...通过以上步骤,我们可以将Java程序打包成jar或exe文件,方便用户下载和运行,同时也提高了软件的分发效率。在实际操作中,根据项目需求选择合适的打包工具和策略至关重要。

    JAVA SQLServer所需要的JAR包

    标题提到的"JAVA SQLServer所需要的JAR包"正是指这些驱动程序库,它们使得Java应用程序能够通过SQL协议与SQL Server进行通信。在描述中提到了三个关键的JAR文件:`msbase.jar`,`mssqlserver.jar`,以及`msutil.jar`...

    Java后台打开浏览器所用到的jar包

    总的来说,"Java后台打开浏览器所用到的jar包"提供了一种便捷的方式来实现在Java后台程序中打开浏览器的功能,解决了`java.awt.Desktop`类在某些环境下的不足。通过理解这个jar包的工作原理和使用方式,开发者可以更...

    编写java程序jar包

    5. **运行jar包**:一旦jar包创建完成,可以通过`java -jar`命令来运行包含主类的jar文件。例如: ``` java -jar myapp.jar ``` jar包还有其他用途,例如: - **库依赖**:许多开源项目会发布他们的代码为jar包...

    java程序打jar包

    以下是对如何使用MyEclipse将Java程序打成jar包的详细步骤及注意事项的解释: 1. **项目导出**: 在MyEclipse中,首先需要选择你要打包的Java项目。右键点击项目,在弹出的菜单中选择“Export”(导出)选项,这是...

    idea将Java项目打包Jar包生成exe应用程序.docx

    打包Springboot项目到jar包: 1. 在IntelliJ IDEA中,打开项目。 2. 转到`Build`菜单,选择`Build Artifacts...`。 3. 如果尚未配置Artifacts,点击`+`添加一个新的Artifact,选择`JAR`,然后`From modules with ...

    java 程序打包成jar文件后 连接数据库出错(教程方法)

    总之,打包Java程序至JAR文件并连接MySQL数据库,需要正确管理依赖,选择合适的打包工具,如Eclipse的Export功能,以及在必要时使用exe4j将其转换为可执行文件。同时,处理好数据库连接参数的存储和管理,确保程序的...

    java程序连SQL 2008 jar包

    对于命令行编译和运行,确保在运行Java程序的目录中包含该jar文件,或者在`java`命令行中使用`-cp`或`-classpath`选项指定其位置。 2. **注册驱动**:在Java代码中,需要通过`Class.forName()`方法注册JDBC驱动。...

    Java 自动加载JAR文件并运行其中的类方法

    在Java编程中,有时我们需要动态地加载...总之,Java自动加载JAR文件并运行其中的类方法是一项实用的技术,它增强了Java程序的灵活性和可扩展性。通过理解和掌握这些技术,开发者能够构建出更加强大和灵活的应用系统。

    java连接mysql数据库用到的jar包

    1. **命令行**:如果你在命令行环境中运行Java程序,可以使用`-cp`或`-classpath`选项指定JAR文件的路径。 2. **IDE**:在像Eclipse、IntelliJ IDEA这样的集成开发环境中,可以在项目构建路径中添加外部JAR,IDE会...

    用bat运行java文件中引用了外部jar的java程序

    在IT行业中,我们经常需要处理各种编程任务,其中之一就是在命令行环境下运行包含外部jar依赖的Java程序。在Windows操作系统中,我们通常会使用批处理(BAT)文件来自动化这一过程。下面将详细介绍如何通过BAT文件...

    所有要用到的jar包

    标题"所有要用到的jar包"表明这是一份包含了项目运行所需全部依赖的集合,而描述中提到的"项目6.5"可能是某个具体项目的版本,暗示这些`jar`包是为了解决该项目在运行时遇到的错误或缺失的依赖。 `jar`包的使用通常...

    运行jar程序时添加vm参数的方法

    本文将详细介绍如何在运行JAR程序时添加虚拟机(VM)参数。 首先,让我们理解什么是VM参数。VM参数,即Java虚拟机参数,用于设置JVM的行为,包括内存分配、垃圾回收策略、性能监控等。这些参数以-D或-X开头,用于...

Global site tag (gtag.js) - Google Analytics