クラスが含まれるJARファイルのURLを取得

【PR】当サイトはプロモーションが含まれています。

1)Class から #getResource にてリソースURLを取得。

2)JAR であれば JarURLConnection に変換し、#getJarFileURL にてJARファイルのURLを取得。

/**
 * 指定されたクラスのリソースURLを取得します。
 * 
 * @param clazz クラス
 * @return URL
 */
public static URL getResourceUrl(Class clazz) throws Exception {
  URL resourceUrl = clazz.getResource(BcLangUtil.toClassFileName(clazz));  
  return resourceUrl;
}


/**
 * 指定されたURLのJARファイルのURLを取得します。
 * 
 * @param url URL
 * @return JARの場合はそのURL。JARでない場合は null
 */
public static URL getJarFileUrl(URL url) throws Exception {
  URLConnection urlConnection = url.openConnection();
  URL jarFileUrl = null;
  if (urlConnection instanceof JarURLConnection) {
    JarURLConnection jarURLConnection = (JarURLConnection)urlConnection;
    jarFileUrl = jarURLConnection.getJarFileURL();
  }
  return jarFileUrl;
}


/**
 * 指定されたクラスが含まれるJARファイルのURLを取得します。
 * 
 * @param clazz クラス
 * @return JARの場合はそのURL。JARでない場合は null
 */
public static URL getJarFileUrl(Class clazz) throws Exception {
  URL jarUrl = getResourceUrl(clazz);
  if (jarUrl == null) {
    return null;
  }	
  return getJarFileUrl(jarUrl);
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です