private ApplicationBundler createBundler(ClassAcceptor classAcceptor, Path stagingDir) { return new ApplicationBundler(classAcceptor).setTempDir(stagingDir.toFile()); }
private ApplicationBundler createBundler(ClassAcceptor classAcceptor, Path stagingDir) { return new ApplicationBundler(classAcceptor).setTempDir(stagingDir.toFile()); }
private ApplicationBundler createBundler(ClassAcceptor classAcceptor) { return new ApplicationBundler(classAcceptor).setTempDir(getLocalStagingDir()); } }
private ApplicationBundler createBundler(ClassAcceptor classAcceptor) { return new ApplicationBundler(classAcceptor).setTempDir(getLocalStagingDir()); } }
ApplicationBundler bundler = new ApplicationBundler(ImmutableList.of("co.cask.cdap.api", "org.apache.hadoop", "org.apache.hbase",
ApplicationBundler bundler = new ApplicationBundler(ImmutableList.of("co.cask.cdap.api", "org.apache.hadoop", "org.apache.hbase",
throws IOException, InstantiationException, IllegalAccessException { ApplicationBundler bundler = new ApplicationBundler(ImmutableList.of("co.cask.tigon.api", "org.apache.hadoop", "org.apache.hbase"));
ApplicationBundler appBundler = new ApplicationBundler(new ClassAcceptor() { @Override public boolean accept(String className, URL classUrl, URL classPathUrl) {
ApplicationBundler appBundler = new ApplicationBundler(new ClassAcceptor() { @Override public boolean accept(String className, URL classUrl, URL classPathUrl) {
ApplicationBundler bundler = new ApplicationBundler(ImmutableList.of("co.cask.cdap.api", "org.apache.hadoop", "org.apache.hive",
File... bundleEmbeddedJars) throws IOException { ApplicationBundler bundler = new ApplicationBundler(classAcceptor); Location jarLocation = locationFactory.create(clz.getName()).getTempFile(".jar"); ClassLoader oldClassLoader = ClassLoaders.setContextClassLoader(clz.getClassLoader());
@Test public void testExtraClassPath() throws IOException, ClassNotFoundException { File tmpDir = TMP_FOLDER.newFolder(); // Create two jars, one with guava, one with gson ApplicationBundler bundler = new ApplicationBundler(new ClassAcceptor()); Location guavaJar = Locations.toLocation(new File(tmpDir, "guava.jar")); bundler.createBundle(guavaJar, ImmutableList.class); Location gsonJar = Locations.toLocation(new File(tmpDir, "gson.jar")); bundler.createBundle(gsonJar, Gson.class); // Unpack them File guavaDir = BundleJarUtil.unJar(guavaJar, TMP_FOLDER.newFolder()); File gsonDir = BundleJarUtil.unJar(gsonJar, TMP_FOLDER.newFolder()); // Create a DirectoryClassLoader using guava dir as the main directory, with the gson dir in the extra classpath String extraClassPath = gsonDir.getAbsolutePath() + File.pathSeparatorChar + gsonDir.getAbsolutePath() + "/lib/*"; ClassLoader cl = new DirectoryClassLoader(guavaDir, extraClassPath, null, Arrays.asList("lib")); // Should be able to load both guava and gson class from the class loader cl.loadClass(ImmutableList.class.getName()); cl.loadClass(Gson.class.getName()); }