Use VM verifier to make sure that supplied jar is correct.
The verification of a JAR is performed in chunks.
During verification of a chunk no other isolates can execute.
Each chunk consists of one or more class files.
The size of a chunk is the total compressed size of JAR entries
in the chunk. Verification of a chunk stops when either the
size of a chunk exceeds the specified chunkSize
or
there are no more entries in the JAR. Larger values of
chunkSize
ensure faster verification of the JAR,
but other active isolates will have less chances to execute
while the verification is in progress.
This method is multitask-safe, i.e. it can be invoked from multiple
tasks at the same time.
The method returns after the whole JAR is verified and the return value
indicates if the JAR is correct.
Note: for this API to function, compilation time flag
ENABLE_VERIFY_ONLY=true must be specified
if (chunkSize <= 0) {
throw new IllegalArgumentException();
}
String[] classpath = new String[1];
String[] mainArgs = new String[2];
classpath[0] = jarPath;
mainArgs[0] = jarPath;
mainArgs[1] = new Integer(chunkSize).toString();
int status = 0;
try {
Isolate iso = new Isolate("com.sun.cldc.isolate.Verifier",
mainArgs,
classpath);
iso.setAPIAccess(true);
iso.start();
iso.waitForExit();
status = iso.exitCode();
}
catch (IsolateStartupException ise) {
ise.printStackTrace();
return false;
}
return status == JVM.STATUS_VERIFY_SUCCEEDED;