工作时,用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
分享到:
相关推荐
在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件...以及程序的启动和停止脚本(非java -jar命令启动,使用shell脚本通过java class文件启停java程序)
此程序的作用是:在windows操作系统下,通过双击可以启动一个java程序。 其内部原理其实也是使用了javaw程序来打开.jar或.class文件。跟我们直接在命令行输入javaw XXX一样,只不过用一个小程序代替了命令行输入,...
本人亲测,简体中文破解,绝对简单好用,可将jar包或java转成可直接运行的java程序,支持图标,传上来做个备份以防丢失。 使用教程(共六步,傻瓜式): 下载并解压后打开目录,找到主程序j2ewiz.exe并双击运行 1....
1、解压后把所有文件放到有自开发带main的主class的jar包所在的目录下 2、修改launcher目录下launcher.properties配置文件 main代表Main-Class 路径,如:test.Test ...3、运行launcher.bat启动java程序
传统的Java程序加密的方式多为代码混迹方式,但是无论多么复杂的混迹方式,在使用Java代码反编译程序后还是可以看 到代码的逻辑结构,这样并没有彻底的保护好您的代码。 JavaClass文件加密专家通过分析Class...
jclasslib是一款免费开源的java字节码查看工具,该软件不但可以查看java字节码,同时还包含一个类库允许开发者读取,修改,写入Java Class文件与字节码。简单的说:用户可以通过jclasslib修改jar包下面的类,是一个...
1.此工具会查找目标文件夹下所有...8.启动程序前请备份目标文件夹,防止丢失jar包文件 9.此程序为提高效率使用到多线程,对cpu消耗比较大,请注意机器散热 10.因为程序要做大量的读写删除等io操作,所有运行时间比较长
2.讯盟安装增加判断 3.增加英文操作系统支持 2008-9-6 增加安装配置文件、可自行定制安装项:setup。ini 2008-8-25 改动安装界面 2008-8-18 界面美化 2008-8-3 web虎采用新驱动、实时加解密、不再用b盘来保存了 2008...
为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆方式,这种方式对于Class文件的加密是不彻底的,还是能够通过分析得出核心算法。本工具是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先...
解决双击 jar 和 class文件不能直接在windows命令提示符下运行的问题,不用手动修改注册表和环境变量,把文件的打开方式设为本程序即可
传统的Java程序加密的方式多为代码混迹方式,但是无论多么复杂的混迹方式,在使用Java代码反编译程序后还是可以看到代码的逻辑结构,这样并没有彻底的保护好您的代码。 Java 类文件加密专家通过分析Class文件的结构...
将要使用的是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到该...
2、用 rar 解压出 jar 文件中的 class 文件,然后 用jad 或 DJ Java Decompiler 反编译工具将 .class 文件反编译成 .java 文件 3、运行 JD-GUI工具(绿色软件),打开上面的 jar 文件,在File下有个 Save JAR Source...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
源代码,jar包及bat文件,注意:bat文件中不能有空格。
可执行程序能够自动从“注册表”或“JAVA_HOME环境变量” 找到当前操作系统中所安装的 jre 环境。 3.2 配置运行环境 如果 jre 文件夹采用复制方式,随同可执行文件一起发布,那么可以添加配置文件进行配置。 配置...
运行目录下的脚本,可以启动相应程序: 启动服务器: server.bat 相应命令:java -classpath ./lib/mydb.jar;./lib/antlr-3.2.jar;./lib/commons-beanutils.jar;./lib/commons-collections.jar;./lib/commons-...
C:\lib\abc.jar 指定jvm寻找.class文件路径的方法有三种,分别是从当前目录下寻找、某个文件夹下寻找或在链接库的jar文件中寻找。 同样,使用命令行指定classpath的方式优先于从系统读取classpath环境变量。 7...
一个完整的三字棋程序源码,它包含客户端和服务器(C/S). ...运行方式:先启动服务器:server.jar 再启动多个客户端:client.jar //----------------------------------------------------------
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...