Determine if running from JARTag(s): Environment
package com.rgagnon;
public class HelloClass {
 public static void main(String[] args) {
    new HelloClass().say();
 }
 public void say() {
   String className = this.getClass().getName().replace('.', '/');
   String classJar =
     this.getClass().getResource("/" + className + ".class").toString();
   if (classJar.startsWith("jar:")) {
     System.out.println("*** running from jar!");
   }
   System.out.println(classJar);
 }
}
>jar cvfm Hello.jar manifest.mft com\rgagnon\HelloClass.class added manifest adding: com/rgagnon/HelloClass.class (in=1059) (out=601) (deflated 43%) >java com.rgagnon.HelloClass file:/C:/DEV/WORK/JAVA/com/rgagnon/HelloClass.class >java -jar Hello.jar *** running from jar! jar:file:/C:/DEV/WORK/JAVA/Hello.jar!/com/rgagnon/HelloClass.class
package com.rgagnon.howto;
public class RunningJar {
 public static void main(String[] args) {
   String runningJarName = new RunningJar().getRunningJarName();
   if (runningJarName != null) {
     System.out.println("Running from " + runningJarName);
   }
   else {
     System.out.println("Not running from a jar");
   }
 }
 public String getRunningJarName() {
   String className = this.getClass().getName().replace('.', '/');
   String classJar =
     this.getClass().getResource("/" + className + ".class").toString();
   if (classJar.startsWith("jar:")) {
     String vals[] = classJar.split("/");
     for (String val: vals) {
       if (val.contains("!")) {
         return val.substring(0, val.length() - 1);
       }
     }
   }
   return null;
 }
}
/*
output :
>java -jar yop.jar
Running from yop.jar
>ren yop.jar yip.jar
>java -jar yip.jar
Running from yip.jar
*/
See these related HowTo's : Obtain from where a Class is loaded Get the "root" of an application
  mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com
