Comments (3)
You can replace sun.boot.class.path
with a list of all relevant jar files in System.getProperty("java.home") + java.io.File.separator + "lib"
There are many .jar files in that directory; the ones that are needed for bootstrapping the JVM in Java 8 are (on Mac OS X):
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/resources.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/sunrsasign.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jsse.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jce.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/charsets.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/jfr.jar
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/classes
However, the list may be different for newer versions of Java, so it is probably best to look through all .jar files in java.home + "/lib".
from jpf-core.
We have to use java.lang.Classloader to load all internal resources, as the format of the internal storage of the base libraries is not defined and subject to change.
It seems the right way to do this is to go through the module layer:
Module m = ModuleLayer.boot().findModule("java.base"); // returns Option<Module>
m.get().getClassLoader().loadClass("java.lang.Object");
// to get URL for use in ClassFileMatch: m.get().getClassLoader().getSystemResource("java.lang.Object");
// to read bytecode: m.get().getResourceAsStream("java.lang.Object");
from jpf-core.
It seems we have to adapt JPF at various levels for this: JPF.java, to use the right classloader; JVMClassFileContainer, perhaps subclasses as JModClassFileContainer, which can delegate to Module.getResourceAsStream and such; and we have to make sure that the base classes are found and loaded without implementation-specific user configuration.
JModClassFileContainer would have to extend JVMClassFileContainer and override getMatch to find the resource (via Module.getResourceAsStream etc. as above).
The "right" classloader is probably the PlatformClassLoader, returned by ClassLoader.getPlatformClassLoader()
: https://docs.oracle.com/javase/10/docs/api/java/lang/ClassLoader.html#builtinLoaders
Try changing line 227 in JPF.java to use the platform classloader instead of the class loader used to load JPF.java.
from jpf-core.
Related Issues (20)
- Migration to Java 11 HOT 2
- Coverage configuration HOT 2
- Unit test case performance HOT 10
- Orphan NativePeer method with Java 11.0.20.1 HOT 10
- Gradle build under Gradle 8 has inconsistent configuration HOT 5
- Classpath issue while using JPF(Java Path Finder) HOT 2
- NoClassDefFoundError: sun/misc/SharedSecrets HOT 1
- Build Error occurring when I have the correct version of Java installed? HOT 7
- URLClassLoader unit tests fail under Windows HOT 7
- JPF fails with java.lang.IllegalArgumentException: Null charset name HOT 3
- The wrapper.jar checksum is not consistent with the gradle version. HOT 3
- Cannot build jpf-core due to compileAnnotationsJava FAILED HOT 6
- Class not found: com.google.common.util.concurrent.ThreadFactoryBuilder HOT 1
- Java Path Finder Latest Version not available HOT 1
- Addressing Deprecated API Usage: public static SecurityManager getSecurityManager() {....} has been deprecated since Java 17 HOT 47
- Test case failure at Java-8 branch HOT 6
- `String.equals(Object)` makes JPF on Java 11 crash HOT 9
- Java 17 support: CI configuration, identification of key issues HOT 29
- java.lang.NoSuchMethodError: java.lang.String.getBytes([BIIBI) HOT 13
- cannot find native jdk.internal.misc.CDS.isDumpingClassList0 HOT 43
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jpf-core.