`
bjmike
  • 浏览: 283923 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何判断java程序是从class启动还是从jar启动的?

 
阅读更多
工作时,用eclipse写java程序,然后打成jar包部署。在调试单个class时,程序是从.class文件启动的;部署之后,程序是从jar包启动的。在这两种场景下,获取程序运行的一些配置文件的方式是不同的。从.class文件启动时,可以直接通过FileInputStream来读取配置文件;而在jar包中,需要getResourceAsStream来打开配置文件。为了保持调试和部署的代码一致,我需要知道一个java程序到底是从.class文件还是从jar包启动的。

从stackoverflow上找到了答案:

http://stackoverflow.com/questions/482560/can-you-tell-on-runtime-if-youre-running-java-from-within-a-jar

要点是用Class.getResource方法来获取该类文件的位置:

public class Foo
{
    public static void main(String[] args)
    {
        System.out.println(Foo.class.getResource("Foo.class"));
    }
}

如果是.class文件启动:

file:/C:/Users/Jon/Test/com/whatever/Foo.class

如果是从jar包启动:

jar:file:/C:/Users/Jon/Test/foo.jar!/com/whatever/Foo.class
分享到:
评论

相关推荐

    JAVA 将class打包为jar

    通过上述步骤,我们可以有效地将Java程序中的多个Class文件打包成一个JAR文件。这种方式不仅简化了项目的分发流程,还提高了代码的安全性和可维护性。在实际操作过程中,还需要根据具体需求调整细节,例如自定义...

    java jar反编译工具 java Class反编译工具

    本篇文章将详细介绍Java的jar反编译工具——JD-GUI以及如何使用它来反编译Java Class文件。 JD-GUI是一款直观的图形用户界面工具,专门用于反编译Java的Class文件,从而帮助开发者查看和理解字节码背后的源代码。它...

    linux上通过sh方式启动java jar程序并做为守护进程

    3. `MAIN_CLASS`变量定义了Java程序的主要类名,这是JAR文件的入口点。 4. 使用`nohup`命令启动Java应用,它可以防止进程在接收到HUP(挂断)信号时被终止,这通常发生在用户注销或终端关闭时。 5. `&`符号使得Java...

    java程序启动bat

    - `java -jar %JAR_FILE_PATH%`是启动Java程序的实际命令,`%JAR_FILE_PATH%`会取到我们设置的环境变量值。 - `pause`命令用于在程序结束时暂停,以便查看输出信息,用户按下任意键后才会继续。 3. **标签“源码 ...

    8种启动java程序的方法

    如果Java程序被打包成一个JAR文件,并且该JAR文件包含了一个主类(即在MANIFEST.MF文件中定义了`Main-Class`),则可以直接使用 `-jar` 选项启动。例如: ``` java -jar hello-world.jar ``` 这种方式是最常见的部署...

    java小程序jar格式

    4. **优化加载**:JAR文件允许Java虚拟机一次性加载多个类,提高程序启动速度。 5. **资源共享**:多个应用程序可以共享同一个JAR库,减少系统资源占用。 五、使用JAR的注意事项 1. **冲突处理**:当多个JAR文件...

    java项目在window注册服务自启动

    在这里,你需要指定Java主类(`wrapper.java.mainclass`),应用的JAR文件路径(`wrapper.java.classpath`),以及其他相关参数如内存分配(`wrapper.java.additional.*`)。 3. **创建启动脚本**: 在JSW的bin目录...

    java 启动jar

    在Java开发中,将应用程序打包成JAR(Java Archive)文件是常见的做法,这使得代码易于分发和执行。本文将深入探讨如何启动Java的JAR文件,以及相关的工具和源码管理技巧。 首先,我们需要了解Java的命令行工具`...

    java调用外部jar文件

    下面将详细介绍如何在Java程序中调用外部jar文件。 首先,了解Java类加载器的工作原理是必要的。默认情况下,Java的系统类加载器会从类路径(CLASSPATH)中加载类,包括JRE自身的库、应用的主类路径以及任何用户...

    Shell脚本通过Java class文件启停Java程序源码(脚本及源码)

    在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件...以及程序的启动和停止脚本(非java -jar命令启动,使用shell脚本通过java class文件启停java程序)

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

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

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

    1. **Java程序打包jar**: - **JAR(Java Archive)**:JAR文件是Java平台特有的归档格式,它允许将多个类文件和其他资源(如图像、声音等)打包到一个文件中。通过使用`jar`命令或者构建工具(如Maven、Gradle)...

    java应用程序打包工具--fat jar

    Java应用程序打包工具--fat jar,是一种将所有依赖的库文件(jar)合并到一个可执行的jar文件中的技术。这通常是为了方便分发和运行Java应用程序,因为用户不再需要设置复杂的类路径。fat jar,也被称为"uber jar"或...

    java程序做成Windows服务运行

    Java程序在Windows操作系统上作为服务运行,是一种常见的部署方式,特别是在需要后台持续运行且与系统启动同步的应用场景中。要实现这一目标,我们可以利用开源工具Winsw,它是一个小型的Windows服务封装器,允许...

    启动,停止某个某个java程序

    本文将深入探讨如何启动和停止特定的Java程序,以及相关工具和技术的应用。这里提到的"启动,停止某个Java程序",通常涉及到命令行操作,脚本编写,以及对Java虚拟机(JVM)的理解。 首先,启动Java程序通常通过`...

    JAVA打包成可运行的JAR程序

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

    编译运行java带jar包

    在Java编程环境中,有时...总结来说,编译和运行带有JAR包的Java程序涉及编译源代码、设置类路径、创建MANIFEST.MF文件指定主类、打包成JAR并最后运行JAR。通过使用IDE或构建工具,这个过程可以变得更加便捷和高效。

    java程序打jar包

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

    用于反编译jar为JAVA代码java -jar cfr-0.152.jar xx.jar -outputdir 路径

    - `java -jar` 是启动Java应用程序的标准方式,这里的`cfr-0.152.jar`是CFR反编译器的可执行JAR文件。 - `xx.jar` 是你要反编译的目标.jar文件。 - `-outputdir 路径` 参数指定反编译后生成的源代码保存位置。路径...

    jclasslib修改jar包里面的class文件包含jar

    在Java开发过程中,有时我们需要对已打包的JAR文件进行修改,例如修复错误、更新类或资源等。`jclasslib`是一款强大的反编译器和字节码查看器,它允许开发者查看并修改JAR文件中的`.class`文件。这篇文章将深入探讨...

Global site tag (gtag.js) - Google Analytics