本文整理匯總了Java中org.apache.commons.vfs2.impl.VFSClassLoader.getFileObjects方法的典型用法代碼示例。如果您正苦於以下問題:Java VFSClassLoader.getFileObjects方法的具體用法?Java VFSClassLoader.getFileObjects怎麽用?Java VFSClassLoader.getFileObjects使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類org.apache.commons.vfs2.impl.VFSClassLoader
的用法示例。
在下文中一共展示了VFSClassLoader.getFileObjects方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: initClassLoader
import org.apache.commons.vfs2.impl.VFSClassLoader; //導入方法依賴的package包/類
public static void initClassLoader()
throws MalformedURLException {
synchronized (MUTEX) {
if (classLoaderInitialized) {
return;
}
final ClassLoader classLoader = FeatureDataUtils.class.getClassLoader();
LOGGER.info("Generating patched classloader");
if (classLoader instanceof VFSClassLoader) {
final VFSClassLoader cl = (VFSClassLoader) classLoader;
final FileObject[] fileObjs = cl.getFileObjects();
final URL[] fileUrls = new URL[fileObjs.length];
for (int i = 0; i < fileObjs.length; i++) {
fileUrls[i] = new URL(
fileObjs[i].toString());
}
final ClassLoader urlCL = java.security.AccessController
.doPrivileged(new java.security.PrivilegedAction<URLClassLoader>() {
@Override
public URLClassLoader run() {
final URLClassLoader ucl = new URLClassLoader(
fileUrls,
cl);
return ucl;
}
});
GeoTools.addClassLoader(urlCL);
}
classLoaderInitialized = true;
}
}
示例2: getClasspath
import org.apache.commons.vfs2.impl.VFSClassLoader; //導入方法依賴的package包/類
private static String getClasspath(
final Class context )
throws IOException {
try {
final ArrayList<ClassLoader> classloaders = new ArrayList<ClassLoader>();
ClassLoader cl = context.getClassLoader();
while (cl != null) {
classloaders.add(cl);
cl = cl.getParent();
}
Collections.reverse(classloaders);
final StringBuilder classpathBuilder = new StringBuilder();
// assume 0 is the system classloader and skip it
for (int i = 0; i < classloaders.size(); i++) {
final ClassLoader classLoader = classloaders.get(i);
if (classLoader instanceof URLClassLoader) {
for (final URL u : ((URLClassLoader) classLoader).getURLs()) {
append(
classpathBuilder,
u);
}
}
else if (classLoader instanceof VFSClassLoader) {
final VFSClassLoader vcl = (VFSClassLoader) classLoader;
for (final FileObject f : vcl.getFileObjects()) {
append(
classpathBuilder,
f.getURL());
}
}
else {
throw new IllegalArgumentException(
"Unknown classloader type : " + classLoader.getClass().getName());
}
}
classpathBuilder.deleteCharAt(0);
return classpathBuilder.toString();
}
catch (final URISyntaxException e) {
throw new IOException(
e);
}
}
示例3: initClassLoader
import org.apache.commons.vfs2.impl.VFSClassLoader; //導入方法依賴的package包/類
private static void initClassLoader()
throws MalformedURLException {
synchronized (MUTEX) {
if (classLoaderInitialized) {
return;
}
final ClassLoader classLoader = AccumuloUtils.class.getClassLoader();
LOGGER.info("Generating patched classloader");
if (classLoader instanceof VFSClassLoader) {
final VFSClassLoader cl = (VFSClassLoader) classLoader;
final FileObject[] fileObjs = cl.getFileObjects();
final ArrayList<URL> fileList = new ArrayList();
for (int i = 0; i < fileObjs.length; i++) {
String fileStr = fileObjs[i].toString();
if (verifyProtocol(fileStr)) {
fileList.add(new URL(
fileStr));
}
else {
LOGGER.error("Failed to register class loader from: " + fileStr);
}
}
final URL[] fileUrls = new URL[fileList.size()];
for (int i = 0; i < fileList.size(); i++) {
fileUrls[i] = fileList.get(i);
}
final ClassLoader urlCL = java.security.AccessController
.doPrivileged(new java.security.PrivilegedAction<URLClassLoader>() {
@Override
public URLClassLoader run() {
final URLClassLoader ucl = new URLClassLoader(
fileUrls,
cl);
return ucl;
}
});
SPIServiceRegistry.registerClassLoader(urlCL);
}
classLoaderInitialized = true;
}
}
示例4: test
import org.apache.commons.vfs2.impl.VFSClassLoader; //導入方法依賴的package包/類
@Test
public void test()
// HPFortify FP: unit test not subject to security vulnerability
throws FileSystemException,
MalformedURLException {
DefaultFileSystemManager fsManager = new DefaultFileSystemManager();
fsManager.setCacheStrategy(CacheStrategy.MANUAL);
fsManager.setFilesCache(new SoftRefFilesCache());
fsManager.addProvider(
"file",
new DefaultLocalFileProvider());
fsManager.addProvider(
"jar",
new JarFileProvider());
fsManager.setBaseFile(new File(
"."));
// fsManager.addProvider("jar", new JarFileProvider());
fsManager.init();
FileObject jarFile = fsManager.resolveFile("jar:src/test/test.jar");
final VFSClassLoader cl = new VFSClassLoader(
jarFile,
fsManager);
final FileObject[] fileObjs = cl.getFileObjects();
final URL[] fileUrls = new URL[fileObjs.length];
for (int i = 0; i < fileObjs.length; i++) {
fileUrls[i] = new URL(
fileObjs[i].toString());
}
SPIServiceRegistry registry = new SPIServiceRegistry(
FieldSerializationProviderSpi.class);
registry.registerLocalClassLoader(java.security.AccessController
.doPrivileged(new java.security.PrivilegedAction<URLClassLoader>() {
public URLClassLoader run() {
final URLClassLoader ucl = new URLClassLoader(
fileUrls,
cl);
return ucl;
}
}));
// Proves that the VFS Classloader SPI loading bug exists
Iterator<FieldSerializationProviderSpi> it1 = ServiceLoader.load(
FieldSerializationProviderSpi.class).iterator();
boolean found = false;
while (it1.hasNext()) {
found |= it1.next().getClass().equals(
BooleanSerializationProvider.class);
}
assertFalse(found);
Iterator<FieldSerializationProviderSpi> it = registry.load(FieldSerializationProviderSpi.class);
found = false;
try {
while (it.hasNext()) {
found |= it.next().getClass().equals(
BooleanSerializationProvider.class);
}
}
catch (Throwable ex) {
assertTrue(ex instanceof NoClassDefFoundError && ex.getLocalizedMessage().contains(
"FieldSerializationProviderSpi"));
return;
}
assertTrue(
"The class not found exception is expected since the JAR file was not registered",
false);
}