首页
学习
活动
专区
圈层
工具
发布

Java中令人困惑的classpath和jar到底是什么鬼?

Java中令人困惑的classpath和jar到底是什么鬼?...ClassPath是什么 如何去设置classPath以及是否需要设置classPath jar包 小结 ---- ClassPath是什么 在Java中,我们经常听到classpath这个东西。...如果指定的.class文件不存在,或者目录结构和包名对不上,均会报错。 ---- jar包 如果有很多.class文件,散落在各层目录中,肯定不便于管理。...jar包实际上就是一个zip格式的压缩文件,而jar包相当于目录。如果我们要执行一个jar包的class,就可以把jar包放到classpath中: java -cp ....JVM会自动读取这个MANIFEST.MF文件,如果存在Main-Class,我们就不必在命令行指定启动的类名,而是用更方便的命令 java -jar hello.jar jar包还可以包含其它jar包

2.7K73

Java classpath调用规则

一、虚拟机加载类的时候的规则如下         1、当没有设置classpath的时候,虚拟机直接在当前路径下载加载classpath。        ...2、当设置了classpath以后,如果设置的classpath是以";"结尾的,那么虚拟机按照设置的路径从前向后地寻找,如果都              没有到,会在当前路径下寻找;如果设置的classpath...二、classpath对应的Dos命令         1、查看classpath环境变量:set classpath         2、取消classpath环境变量的定义:set classpath...=         3、将classpath环境变量设置为某值:set classpath=xxxxxxxxxxxxxxxxxxxx(;) 三、path这个环境变量的规则是:先从当前路径下寻找,如果找不到才会到

1.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 开发中的指定外部 Jar 路径详解

    如何在 Java 中指定外部 JAR 路径,便成为了开发者的常见需求。本文将详细解析这一操作,并结合具体的使用案例和场景分析其优缺点。...摘要本文将围绕如何在 Java 中指定外部 JAR 路径展开,介绍不同的方式来加载外部 JAR,并展示其在开发和运行中的具体应用场景。...引用不在中央仓库(如 Maven Central)中的 JAR 文件。需要跨项目复用相同的 JAR 库。接下来我们将讨论如何在 Java 中通过不同方式指定这些外部 JAR 路径。...源码解析在 Java 中,指定外部 JAR 路径的方式有多种,主要包括以下几种方法:1. 通过命令行 -classpath 或 -cp 参数这是最简单、最常见的一种方式,尤其在小型项目或临时项目中。...通过这种方式,Java 将在运行时找到并加载指定的 JAR 文件。2.

    3.6K21

    Java的ClassPath问题

    在文章《Spark Submit的ClassPath问题》中,我探讨了针对spark-submit的Jar包,如何指定外部依赖的Jar包。同样的问题在本地部署时仍然存在。...此时,运行Jar并不是通过spark-submit,而是通过java命令,例如: exec java -Xmx2000m -DMORT_HOME=$MORT_HOME -Ddata-set-parquet.path...2>&1 这里-jar参数后面指定的就是我们要运行Jar包,而在该Jar包中Java类,回去调用一个第三方的jar包,且jar包并没有被放到mort.jar包中。...通过查看java命令的帮助文档,我最初以为通过设置-classpath参数来指定外部依赖包就可以轻松解决。然而事情的发展并非我所愿,运行时仍然报告找不到第三方Jar包中相关类的错误。...查阅文档,发现: 当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJar.jar的内部class作为类的寻找范围。

    1.8K70

    Java开发环境不再需要配置classpath

    ;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar 原代码详解: Java_Home代表了我们jdk的路径 dt.jar...tools.jar是工具类库,它在编译和运行一个类时被使用 当我们配置classpath后,系统会根据我们所配置的classpath加载类 例如:在我们使用javac命令编译程序时,系统加载tools.jar...其实就封装了下面这样一条命令 javac XXX.java java -Classpath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java 当然tools...在JDK1.5以后,classpath并不是必须配置了,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但...通过官方的文档说明我们可以看到,rt.jar和tool.jar这两种属于java平台自身的包就不需要添加到classpath中,只有一些第三方类或者自定义类需要,也并不推荐使用配置CLASSPATH的方法

    2.2K50

    「JAVA」 Java基础之CLASSPATH环境变量

    CLASSPATH是个啥 CLASSPATH直译过来是类路径,是Java环境配置中要设置的一个环境变量,就是.class文件的路径,表示JVM从哪里去寻找要运行的class文件,CLASSPATH...CLASSPATH能干啥 在java5之前CLASSPATH没有默认值,如果想要使用当前路径作为类路径的话,可以使用“.”,用“.”表示当前路径;若CLASSPATH=....CLASSPATH 怎么配置 从Java5开始CLASSPATH默认就是当前路径,一般情况下就不需要再设定了。若使用Java5以前的版本,需要设置环境变量CLASSPATH为: CLASSPATH ....;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 其中dt.jar是关于java运行环境的类库;tools.jar是工具类库; 在java5中,sun...公司改进了JDK设计,JRE会自动搜索当前路径下的jar包,并自动加载dt.jar和tools.jar。

    14.9K41

    Java 开发环境不再需要配置 classpath

    ;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar 1.1 原代码详解 Java_Home代表了我们jdk的路径 dt.jar...tools.jar是工具类库,它在编译和运行一个类时被使用 当我们配置classpath后,系统会根据我们所配置的classpath加载类 例如:在我们使用javac命令编译程序时,系统加载tools.jar...其实就封装了下面这样一条命令 javac XXX.java java -Classpath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java 当然tools的功能可不止这一点...在JDK1.5以后,classpath并不是必须配置了,在JDK1.5之前,是没有办法在当前目录下加载类的(找不到 JDK目录下lib文件夹中的.jar文件),所以我们需要通过配置classpath,但...通过官方的文档说明我们可以看到,rt.jar和tool.jar这两种属于java平台自身的包就不需要添加到classpath中,只有一些第三方类或者自定义类需要,也并不推荐使用配置CLASSPATH的方法

    2.6K10

    Python脚本中调用Java程序时Classpath错误

    他在脚本中使用以下代码调用Java程序:x = 'java -cp "lib/*:esalib.jar" clldsystem.esa.ESAAnalyzer %s %s' % (word1, word2...他将代码更新为:x = 'java -cp "../lib/*:esalib.jar" .....解决方案为了解决此错误,用户可以执行以下步骤:确保Java类路径正确。用户需要确保Java类路径中包含Java程序所在的JAR文件和库文件。...用户需要检查Java类路径是否正确,并确保JAR文件和库文件存在且可访问。确保Java程序的主类正确。用户需要确保在Java程序的主类中指定了正确的入口点。...此脚本将使用Java类路径中的JAR文件和库文件运行Java程序"clldsystem.esa.ESAAnalyzer"。Java程序的主类是"clldsystem.esa.ESAAnalyzer"。

    1K10

    Java主函数解释、javajavac命令解释、classpath解释

    让编译器做事:   javac是java对外提供的一个命令,他的底层对应着一整套java编译程序,其实就是用这个命令启动了一个编译程序,编译.java文件,就是对java的原文件进行检查,检查原代码的正确性...它就去指定的位置去找名称为Demo.class的文件,找到后将其加载到内存(因为任何程序运行需要加载到内存里运行,因为硬盘的速度比较慢,所以硬盘会把数据都转移到内存这个临时存储区后由CUP来进行运算,内存是个大的临时存储空间...运行文件(即类文件)在哪,我就去哪运行,即Demo.class在哪,我就去哪使用命令 java Demo 运行它。 classpath的作用是:可以在任意目录下都能运行java程序。...但是:有另一种方法:     即classpath是在规定虚拟机该到什么地方去执行java运行程序。     ...若没有配置classpath环境变量时,虚拟机就在该当前目录上查找要运行的类文件,若没有找着就报错。     若配置的话,虚拟机就在你配置的目录下查找要运行的类文件。

    1.9K10

    gradle、maven项目配置jar输出指定位置

    通常情况下,我们项目在通过Gitlab做CICD部署的时候,运维会统一让我们把需要部署的java编译后的jar包文件重命名并且拷贝到项目根目录下的deploy/app.jar,然后就统一引用一个构建脚本...,目前我们项目组gralde和maven项目都有,基本上都是通过插件实现拷贝重命名到指定位置,当然gradle直接写脚本就可以简单拷贝,下面给出一些配置参考,仅做备忘。...系统属性:定义在操作系统中的属性,例如JAVA_HOME、M2_HOME等。 环境属性:定义在操作系统的环境变量中的属性,例如PATH、JAVA_HOME等。...Java系统属性:通过 JVM 中-D参数传递的属性,例如java.home、user.home等。 命令行属性:通过命令行参数传递的属性,例如-DpropertyName=value。...") into("${rootDir}/deploy/") rename("${project.name}-${version}.jar", "app.jar") } assemble.finalizedBy

    2.4K40
    领券