Research on Dynamic Detection of Java Dependency Conflict

Platform independence is one of the characteristics of the Java language. The Java program is compiled to generate bytecode files, then the Java runtime environment translates the bytecode into machine instructions for the corresponding platform and runs them. The JVM can load the corresponding classes when needed. Incorrect class loading is the root cause of dependency conflicts. Static code detection can be performed on this type of dependency conflict problem, and the function call graphs under different dependency paths can be analyzed and compared to find possible conflict problems. However, due to the dynamic nature of the Java language, based on static analysis tools for analysis, there will be some problems that cannot be handled. This paper proposes a set of processes and a solution to solve this kind of problem through bytecode analysis and enhanced methods.

[1]  Daniel Le Métayer,et al.  Security and dynamic class loading in Java: a formalisation , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[2]  Egon Börger,et al.  Java and the Java Virtual Machine: Definition, Verification, Validation , 2001 .

[3]  Alexander Serebrenik,et al.  Compatibility Prediction of Eclipse Third-Party Plug-ins in New Eclipse Releases , 2012, 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation.

[4]  Ying Wang,et al.  Do the dependency conflicts in my project matter? , 2018, ESEC/SIGSOFT FSE.

[5]  Marco Tulio Valente,et al.  A gentle introduction to OSGi , 2008, SOEN.

[6]  Walter Binder,et al.  Advanced Java bytecode instrumentation , 2007, PPPJ.