jar ファイル内のクラスのリスト
-
26-09-2019 - |
質問
jar ファイルを動的にロードして、その中にあるクラスをリストするにはどうすればよいですか?
解決
パッケージjava.util.jar
のクラスを見てください。あなたがウェブ上でJAR内のファイルを一覧表示する方法の例を見つけることができ、ここでのhref =「http://www.java2s.com/Code/Java/File-Input-Output/Listfilesinajarfile.htm」のrel =」<ですnoreferrer ">例の。 (また、そのページの一番下にあるリンクを注意し、どのようにJARファイルで動作するようにあなたが表示され、より多くの例があります)。
他のヒント
ここでjarファイル内のクラスをリストするためのコードは次のとおりです。
import java.io.IOException;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
public class JarList {
public static void main(String args[]) throws IOException {
if (args.length > 0) {
JarFile jarFile = new JarFile(args[0]);
Enumeration allEntries = jarFile.entries();
while (allEntries.hasMoreElements()) {
JarEntry entry = (JarEntry) allEntries.nextElement();
String name = entry.getName();
System.out.println(name);
}
}
}
}
JAR ファイルの内容の表示
コマンド プロンプトから JAR ファイルの内容を表示するには、次を使用します。
jar tf jar ファイル
例えば:-
jar tf TicTacToe.jar
META-INF/MANIFEST.MF
TicTacToe.class
audio/
audio/beep.au
audio/ding.au
audio/return.au
audio/yahoo1.au
audio/yahoo2.au
images/
images/cross.gif
images/not.gif
高速道:ちょうど.zipファイルなどとしての.jarを開きますディレクトリ名の7 - 郵便番号や表情インチ
ここでは、特定のクラスを拡張するすべてのの非抽象のクラスのために与えられたjarファイルをスキャンしたバージョンです
try (JarFile jf = new JarFile("/path/to/file.jar")) {
for (Enumeration<JarEntry> en = jf.entries(); en.hasMoreElements(); ) {
JarEntry e = en.nextElement();
String name = e.getName();
// Check for package or sub-package (you can change the test for *exact* package here)
if (name.startsWith("my/specific/package/") && name.endsWith(".class")) {
// Strip out ".class" and reformat path to package name
String javaName = name.substring(0, name.lastIndexOf('.')).replace('/', '.');
System.out.print("Checking "+javaName+" ... ");
Class<?> cls;
try {
cls = Class.forName(javaName);
} catch (ClassNotFoundException ex) { // E.g. internal classes, ...
continue;
}
if ((cls.getModifiers() & Modifier.ABSTRACT) != 0) { // Only instanciable classes
System.out.println("(abstract)");
continue;
}
if (!TheSuper.class.isAssignableFrom(cls)) { // Only subclasses of "TheSuper" class
System.out.println("(not TheSuper)");
continue;
}
// Found!
System.out.println("OK");
}
}
} catch (IOException e) {
e.printStackTrace();
}
あなたが知っているときあなたのjarファイルがどこにあるあなたは直接そのコードを使用することができます。その情報を取得するには、クラスパスを経由するように、この他の質問をhref="https://stackoverflow.com/questions/11613988/how-to-get-classpath-from-classloader">
所属していません StackOverflow