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).

¿Fue útil?

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());
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top