¿Cómo obtengo una lista de dependencias de clase Java para una clase principal?
-
03-07-2019 - |
Pregunta
¿Hay alguna manera de encontrar todas las dependencias de clase de una clase principal de Java?
He estado revisando manualmente las importaciones de la clase principal y sus importaciones, pero luego me di cuenta de que, debido a que uno no tiene que importar clases que están en el mismo paquete, estaba armando una lista incompleta.
Necesito algo que encuentre dependencias recursivamente (tal vez a una profundidad definida).
Solución
Se puede hacer fácilmente con javac. Elimine sus archivos de clase y luego compile la clase principal. javac compilará recursivamente las clases que necesite (siempre que no oculte las clases / interfaces privadas de paquetes en archivos con nombres extraños). Por supuesto, esto no cubre ningún hackeo recursivo.
Otros consejos
Acabo de encontrar Analizador de dependencia de clase , descargue, instale configure y 10 minutos después, tengo un completo lista de dependencia de clase.
en idea intellij tiene la ingeniosa matriz de estructura de dependencia . puede explorar perfectamente las dependencias de nivel de paquete y clase. si te gusta más simple, también tienes un visor de dependencias, pero solo puedes ver dependencias de primer orden.
Es posible que desee echar un vistazo a la herramienta de línea de comandos jdeps
:
https://docs.oracle.com /javase/8/docs/technotes/tools/unix/jdeps.html
jdeps -cp <your cp> -v <path to your .class file>
El comando devolverá una lista de las dependencias para ese archivo de clase java. Hay muchas otras opciones que puede usar en su comando como -regex
para encontrar dependencias que coincidan con un patrón dado
Aquí hay un fragmento de código que puede poner en su método principal en Java para generar rutas a todas las dependencias de su aplicación:
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
System.out.println(url.getPath());
}