如何检测程序是否在JAR中运行?

时间:2011-04-15 08:23:59

标签: java jar

如何检测程序是否在JAR中运行?

我问这个,因为加载资源如图片,模板等。在JAR文件中它会有所不同。

提前谢谢。

5 个答案:

答案 0 :(得分:4)

  

我问这个,因为   加载图片等资源   模板等。在JAR文件中   会有所不同。

不,如果你做得对,它就不会。

无论是从目录,网络服务器还是JAR文件加载类,这都将完全相同:

ImageIcon icon = new ImageIcon(getClass().getResource("logo.gif"));

或者,使用getResourceAsStream()方法获得最大的灵活性。

答案 1 :(得分:4)

检查getClass().getProtectionDomain().getCodeSource().getLocation(); - 这会给你一个目录或一个罐子。

答案 2 :(得分:1)

使用getResourceAsStream尝试检索资源。如果您没有在jar中运行,或者找不到该资源,则该方法返回null。在这种情况下,您不是在jar中运行,必须使用FileInputStream或其他方法来检索您的资源。

严格地说,这会检索类路径上的资源,但效果几乎就是您所需要的。

答案 3 :(得分:1)

应用程序以某个类中的main方法开头,我们称之为com.example.Main

您可以使用此代码打印用于加载它的类文件的URL:

System.out.println(ClassLoader.getSystemResource("com/example/Main.class"));

这是用于加载应用程序主类的URL,如果URL String以jar:file:开头,那么类文件已从jar加载。

答案 4 :(得分:0)

您可以通过检查java.class.path系统属性来确定它。然而,这不太可能是一个好主意。相反,您应该使用Class.getResourceAsStream()。然后将资源放在项目中的逻辑目录结构与打包到jar中的资源相同。