`
bjmike
  • 浏览: 277690 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    windows下 双击启动java程序

    此程序的作用是:在windows操作系统下,通过双击可以启动一个java程序。 其内部原理其实也是使用了javaw程序来打开.jar或.class文件。跟我们直接在命令行输入javaw XXX一样,只不过用一个小程序代替了命令行输入,...

    java转exe class转exe jar转exe工具

    本人亲测,简体中文破解,绝对简单好用,可将jar包或java转成可直接运行的java程序,支持图标,传上来做个备份以防丢失。 使用教程(共六步,傻瓜式): 下载并解压后打开目录,找到主程序j2ewiz.exe并双击运行 1....

    Launcher java启动器

    1、解压后把所有文件放到有自开发带main的主class的jar包所在的目录下 2、修改launcher目录下launcher.properties配置文件 main代表Main-Class 路径,如:test.Test ...3、运行launcher.bat启动java程序

    JavaClass二进制文件加密专家

    传统的Java程序加密的方式多为代码混迹方式,但是无论多么复杂的混迹方式,在使用Java代码反编译程序后还是可以看 到代码的逻辑结构,这样并没有彻底的保护好您的代码。 JavaClass文件加密专家通过分析Class...

    jclasslib.rar_Java 8_java8 下载_java字节码查看工具;_jclasslib.jar_允许修改Jav

    jclasslib是一款免费开源的java字节码查看工具,该软件不但可以查看java字节码,同时还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。简单的说:用户可以通过jclasslib修改jar包下面的类,是一个...

    反编译指定文件夹下的所有jar包和calss文件,并放到原目录结构中(本项目是java开发的项目使用了springboot框架)

    1.此工具会查找目标文件夹下所有...8.启动程序前请备份目标文件夹,防止丢失jar包文件 9.此程序为提高效率使用到多线程,对cpu消耗比较大,请注意机器散热 10.因为程序要做大量的读写删除等io操作,所有运行时间比较长

    class加密,java加密,jar加密-Web虎 1.3

    2.讯盟安装增加判断 3.增加英文操作系统支持 2008-9-6 增加安装配置文件、可自行定制安装项:setup。ini 2008-8-25 改动安装界面 2008-8-18 界面美化 2008-8-3 web虎采用新驱动、实时加解密、不再用b盘来保存了 2008...

    使用C++语言实现基于JVMTI机制的 JAVA 代码 加密保护工具

    为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底的,还是能够通过分析得出核心算法。本工具是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先...

    Java程序启动器 Java program launcher.exe

    解决双击 jar 和 class文件不能直接在windows命令提示符下运行的问题,不用手动修改注册表和环境变量,把文件的打开方式设为本程序即可

    Java类文件加密专家

    传统的Java程序加密的方式多为代码混迹方式,但是无论多么复杂的混迹方式,在使用Java代码反编译程序后还是可以看到代码的逻辑结构,这样并没有彻底的保护好您的代码。 Java 类文件加密专家通过分析Class文件的结构...

    mysql-connector-java-commercial-5.1.30-bin.jar

    将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysql-connector-java-5.1.30-bin.jar 配置 在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该...

    android反编译(dex2jar.zip)

    2、用 rar 解压出 jar 文件中的 class 文件,然后 用jad 或 DJ Java Decompiler 反编译工具将 .class 文件反编译成 .java 文件 3、运行 JD-GUI工具(绿色软件),打开上面的 jar 文件,在File下有个 Save JAR Source...

    java源码包---java 源码 大量 实例

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...

    bat 运行java main方法

    源代码,jar包及bat文件,注意:bat文件中不能有空格。

    Java文件转换为 Exe 可执行文件

    可执行程序能够自动从“注册表”或“JAVA_HOME环境变量” 找到当前操作系统中所安装的 jre 环境。 3.2 配置运行环境 如果 jre 文件夹采用复制方式,随同可执行文件一起发布,那么可以添加配置文件进行配置。 配置...

    用java写的MyDB数据库管理器演示程序

    运行目录下的脚本,可以启动相应程序: 启动服务器: server.bat 相应命令:java -classpath ./lib/mydb.jar;./lib/antlr-3.2.jar;./lib/commons-beanutils.jar;./lib/commons-collections.jar;./lib/commons-...

    java jdk8 学习笔记

    C:\lib\abc.jar 指定jvm寻找.class文件路径的方法有三种,分别是从当前目录下寻找、某个文件夹下寻找或在链接库的jar文件中寻找。 同样,使用命令行指定classpath的方式优先于从系统读取classpath环境变量。 7...

    Java分布式 三字棋(井字棋)程序TicTacToe

    一个完整的三字棋程序源码,它包含客户端和服务器(C/S). ...运行方式:先启动服务器:server.jar 再启动多个客户端:client.jar //----------------------------------------------------------

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

Global site tag (gtag.js) - Google Analytics