Java 类java.util.jar.JarFile 实例源码
项目:Jupiter
文件:JavaPluginLoader.java
@Override
public PluginDescription getPluginDescription(File file) {
try (JarFile jar = new JarFile(file)) {
JarEntry entry = jar.getJarEntry("nukkit.yml");
if (entry == null) {
entry = jar.getJarEntry("plugin.yml");
if (entry == null) {
return null;
}
}
try (InputStream stream = jar.getInputStream(entry)) {
return new PluginDescription(Utils.readFile(stream));
}
} catch (IOException e) {
return null;
}
}
项目:openjdk-jdk10
文件:MVJarSigningTest.java
private static void signWithJarSignerAPI(String jarName)
throws Throwable {
// Get JarSigner
try (FileInputStream fis = new FileInputStream(KEYSTORE)) {
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(fis, STOREPASS.toCharArray());
PrivateKey pk = (PrivateKey)ks.getKey(ALIAS, KEYPASS.toCharArray());
Certificate cert = ks.getCertificate(ALIAS);
JarSigner signer = new JarSigner.Builder(pk,
CertificateFactory.getInstance("X.509").generateCertPath(
Collections.singletonList(cert)))
.build();
// Sign jar
try (ZipFile src = new JarFile(jarName);
FileOutputStream out = new FileOutputStream(SIGNED_JAR)) {
signer.sign(src,out);
}
}
}
项目:Reer
文件:DefaultVersionedPlayRunAdapter.java
@Override
public Object getBuildDocHandler(ClassLoader docsClassLoader, Iterable<File> classpath) throws NoSuchMethodException, ClassNotFoundException, IOException, IllegalAccessException {
Class<?> docHandlerFactoryClass = getDocHandlerFactoryClass(docsClassLoader);
Method docHandlerFactoryMethod = docHandlerFactoryClass.getMethod("fromJar", JarFile.class, String.class);
JarFile documentationJar = findDocumentationJar(classpath);
try {
return docHandlerFactoryMethod.invoke(null, documentationJar, "play/docs/content");
} catch (InvocationTargetException e) {
throw UncheckedException.unwrapAndRethrow(e);
}
}
项目:hadoop
文件:JarFinder.java
public static void jarDir(File dir, String relativePath, ZipOutputStream zos)
throws IOException {
Preconditions.checkNotNull(relativePath, "relativePath");
Preconditions.checkNotNull(zos, "zos");
// by JAR spec, if there is a manifest, it must be the first entry in the
// ZIP.
File manifestFile = new File(dir, JarFile.MANIFEST_NAME);
ZipEntry manifestEntry = new ZipEntry(JarFile.MANIFEST_NAME);
if (!manifestFile.exists()) {
zos.putNextEntry(manifestEntry);
new Manifest().write(new BufferedOutputStream(zos));
zos.closeEntry();
} else {
copyToZipStream(manifestFile, manifestEntry, zos);
}
zos.closeEntry();
zipDir(dir, relativePath, zos, true);
zos.close();
}
项目:enigma-vk
文件:ConvertMain.java
private static void computeFieldMatches(File memberMatchesFile, JarFile destJar, File destMappingsFile, File classMatchesFile)
throws IOException, MappingParseException {
System.out.println("Reading class matches...");
ClassMatches classMatches = MatchesReader.readClasses(classMatchesFile);
System.out.println("Reading mappings...");
Mappings destMappings = new MappingsReader().read(new FileReader(destMappingsFile));
System.out.println("Indexing dest jar...");
Deobfuscator destDeobfuscator = new Deobfuscator(destJar);
System.out.println("Writing matches...");
// get the matched and unmatched mappings
MemberMatches<FieldEntry> fieldMatches = MappingsConverter.computeMemberMatches(
destDeobfuscator,
destMappings,
classMatches,
MappingsConverter.getFieldDoer()
);
MatchesWriter.writeMembers(fieldMatches, memberMatchesFile);
System.out.println("Wrote:\n\t" + memberMatchesFile.getAbsolutePath());
}
项目:caoutchouc
文件:CaoutchoucCorePluginLoader.java
void loadCorePlugin(File file, CaoutchoucClassLoader classLoader) {
try {
JarFile jarFile = new JarFile(file);
Manifest manifest = jarFile.getManifest();
if(manifest == null)
throw new FileNotFoundException("Jar does not contain manifest");
String corePlugin = manifest.getMainAttributes().getValue("corePlugin");
if(corePlugin == null)
throw new IllegalArgumentException("Manifest does not contain \"corePlugin\" tag");
Caoutchouc.addInClassLoader(file);
Class<?> corePluginClass = Class.forName(corePlugin, false, classLoader);
if(ICorePlugin.class.isAssignableFrom(corePluginClass))
this.corePluginsClass.add(corePluginClass);
} catch(Exception exc) {
System.err.println(String.format("Unable to load core plugin %s", file.getName()));
exc.printStackTrace();
}
}
项目:openjdk-jdk10
文件:PackTestZip64.java
static void generateLargeJar(File result, File source) throws IOException {
if (result.exists()) {
result.delete();
}
try (JarOutputStream copyTo = new JarOutputStream(new FileOutputStream(result));
JarFile srcJar = new JarFile(source)) {
for (JarEntry je : Collections.list(srcJar.entries())) {
copyTo.putNextEntry(je);
if (!je.isDirectory()) {
copyStream(srcJar.getInputStream(je), copyTo);
}
copyTo.closeEntry();
}
int many = Short.MAX_VALUE * 2 + 2;
for (int i = 0 ; i < many ; i++) {
JarEntry e = new JarEntry("F-" + i + ".txt");
copyTo.putNextEntry(e);
}
copyTo.flush();
copyTo.close();
}
}
项目:incubator-netbeans
文件:NetigsoHid.java
protected static File changeManifest(File dir, String newName, File orig, String manifest) throws IOException {
File f = new File(dir, newName);
Manifest mf = new Manifest(new ByteArrayInputStream(manifest.getBytes("utf-8")));
mf.getMainAttributes().putValue("Manifest-Version", "1.0");
JarOutputStream os = new JarOutputStream(new FileOutputStream(f), mf);
JarFile jf = new JarFile(orig);
Enumeration<JarEntry> en = jf.entries();
InputStream is;
while (en.hasMoreElements()) {
JarEntry e = en.nextElement();
if (e.getName().equals("META-INF/MANIFEST.MF")) {
continue;
}
os.putNextEntry(e);
is = jf.getInputStream(e);
FileUtil.copy(is, os);
is.close();
os.closeEntry();
}
os.close();
return f;
}
项目:jdk8u-jdk
文件:PackTestZip64.java
static void generateLargeJar(File result, File source) throws IOException {
if (result.exists()) {
result.delete();
}
try (JarOutputStream copyTo = new JarOutputStream(new FileOutputStream(result));
JarFile srcJar = new JarFile(source)) {
for (JarEntry je : Collections.list(srcJar.entries())) {
copyTo.putNextEntry(je);
if (!je.isDirectory()) {
copyStream(srcJar.getInputStream(je), copyTo);
}
copyTo.closeEntry();
}
int many = Short.MAX_VALUE * 2 + 2;
for (int i = 0 ; i < many ; i++) {
JarEntry e = new JarEntry("F-" + i + ".txt");
copyTo.putNextEntry(e);
}
copyTo.flush();
copyTo.close();
}
}
项目:CommonFramework
文件:BaseApplication.java
/**
* 获取dex2文件的SHA1-Digest值
*
* @param context
* @return
*/
private String get2thDexSHA1(Context context) {
ApplicationInfo info = context.getApplicationInfo();
String source = info.sourceDir;
try {
JarFile jar = new JarFile(source);
Manifest mf = jar.getManifest();
Map<String, Attributes> map = mf.getEntries();
Attributes a = map.get("classes2.dex");
return a.getValue("SHA1-Digest");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
项目:incubator-netbeans
文件:BrandingSupport.java
private void loadLocalizedBundlesFromPlatform(final BrandableModule moduleEntry,
final String bundleEntry, final Set<String> keys, final Set<BundleKey> bundleKeys) throws IOException {
Properties p = new Properties();
JarFile module = new JarFile(moduleEntry.getJarLocation());
JarEntry je = module.getJarEntry(bundleEntry);
InputStream is = module.getInputStream(je);
File bundle = new File(getModuleEntryDirectory(moduleEntry),bundleEntry);
try {
p.load(is);
} finally {
is.close();
}
for (String key : NbCollections.checkedMapByFilter(p, String.class, String.class, true).keySet()) {
if (keys.contains(key)) {
String value = p.getProperty(key);
bundleKeys.add(new BundleKey(moduleEntry, bundle, key, value));
}
}
}
项目:jdk8u-jdk
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:MultiDexSample
文件:MyApp.java
/**
* Get classes.dex file signature
*
* @param context
* @return
*/
private String get2thDexSHA1(Context context) {
ApplicationInfo ai = context.getApplicationInfo();
String source = ai.sourceDir;
try {
JarFile jar = new JarFile(source);
java.util.jar.Manifest mf = jar.getManifest();
Map<String, Attributes> map = mf.getEntries();
Attributes a = map.get("classes2.dex");
if(a!=null){
return a.getValue("SHA1-Digest");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
项目:openjdk-jdk10
文件:MultiReleaseJarAPI.java
@Test
public void testNames() throws Exception {
String rname = "version/Version.class";
String vname = "META-INF/versions/9/version/Version.class";
ZipEntry ze1;
ZipEntry ze2;
try (JarFile jf = new JarFile(multirelease)) {
ze1 = jf.getEntry(vname);
}
Assert.assertEquals(ze1.getName(), vname);
try (JarFile jf = new JarFile(multirelease, true, ZipFile.OPEN_READ, Runtime.Version.parse("9"))) {
ze2 = jf.getEntry(rname);
}
Assert.assertEquals(ze2.getName(), rname);
Assert.assertNotEquals(ze1.getName(), ze2.getName());
}
项目:apache-tomcat-7.0.73-with-comment
文件:JspUtil.java
public static InputStream getInputStream(String fname, JarFile jarFile,
JspCompilationContext ctxt, ErrorDispatcher err)
throws JasperException, IOException {
InputStream in = null;
if (jarFile != null) {
String jarEntryName = fname.substring(1, fname.length());
ZipEntry jarEntry = jarFile.getEntry(jarEntryName);
if (jarEntry == null) {
throw new FileNotFoundException(Localizer.getMessage(
"jsp.error.file.not.found", fname));
}
in = jarFile.getInputStream(jarEntry);
} else {
in = ctxt.getResourceAsStream(fname);
}
if (in == null) {
throw new FileNotFoundException(Localizer.getMessage(
"jsp.error.file.not.found", fname));
}
return in;
}
项目:jdk8u-jdk
文件:TimestampCheck.java
static void checkTimestamp(String file, String policyId, String digestAlg)
throws Exception {
try (JarFile jf = new JarFile(file)) {
JarEntry je = jf.getJarEntry("META-INF/OLD.RSA");
try (InputStream is = jf.getInputStream(je)) {
byte[] content = IOUtils.readFully(is, -1, true);
PKCS7 p7 = new PKCS7(content);
SignerInfo[] si = p7.getSignerInfos();
if (si == null || si.length == 0) {
throw new Exception("Not signed");
}
PKCS9Attribute p9 = si[0].getUnauthenticatedAttributes()
.getAttribute(PKCS9Attribute.SIGNATURE_TIMESTAMP_TOKEN_OID);
PKCS7 tsToken = new PKCS7((byte[]) p9.getValue());
TimestampToken tt =
new TimestampToken(tsToken.getContentInfo().getData());
if (!tt.getHashAlgorithm().toString().equals(digestAlg)) {
throw new Exception("Digest alg different");
}
if (!tt.getPolicyID().equals(policyId)) {
throw new Exception("policyId different");
}
}
}
}
项目:beaker-notebook-archive
文件:SimpleClassLoader.java
protected Class<?> findClassInJarFile(String qualifiedClassName) throws ClassNotFoundException {
URI classUri = URIUtil.buildUri(StandardLocation.CLASS_OUTPUT, qualifiedClassName);
String internalClassName = classUri.getPath().substring(1);
JarFile jarFile = null;
try {
for (int i = 0; i < jarFiles.size(); i++) {
jarFile = jarFiles.get(i);
JarEntry jarEntry = jarFile.getJarEntry(internalClassName);
if (jarEntry != null) {
InputStream inputStream = jarFile.getInputStream(jarEntry);
try {
byte[] byteCode = new byte[(int) jarEntry.getSize()];
ByteStreams.read(inputStream, byteCode, 0, byteCode.length);
return defineClass(qualifiedClassName, byteCode, 0, byteCode.length);
} finally {
Closeables.closeQuietly(inputStream);
}
}
}
} catch (IOException e) {
throw new IllegalStateException(String.format("Failed to lookup class %s in jar file %s", qualifiedClassName, jarFile), e);
}
return null;
}
项目:TakinRPC
文件:ClassHelper.java
/**
* get all class from jar
* @param jarPath
* @param classLoader
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
public static Set<Class<?>> getClassFromJar(String jarPath, DynamicClassLoader classLoader) throws IOException, ClassNotFoundException {
JarFile jarFile = new JarFile(jarPath);
Enumeration<JarEntry> entries = jarFile.entries();
Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
while (entries.hasMoreElements()) {
JarEntry jarEntry = entries.nextElement();
String name = jarEntry.getName();
if (name.endsWith(".class")) {
String className = name.replaceAll(".class", "").replaceAll("/", ".");
Class<?> cls = null;
try {
// cls = classLoader.findClass(className);
cls = classLoader.loadClass(className);
} catch (Throwable ex) {
}
if (cls != null) {
classes.add(cls);
}
}
}
return classes;
}
项目:incubator-netbeans
文件:MakeNBM.java
private boolean isSigned(final JarFile jar) throws IOException {
Enumeration<JarEntry> entries = jar.entries();
boolean signatureInfoPresent = false;
boolean signatureFilePresent = false;
while (entries.hasMoreElements()) {
String entryName = entries.nextElement().getName();
if (entryName.startsWith("META-INF/")) {
if (entryName.endsWith(".RSA") || entryName.endsWith(".DSA")) {
signatureFilePresent = true;
if (signatureInfoPresent) {
break;
}
} else if (entryName.endsWith(".SF")) {
signatureInfoPresent = true;
if (signatureFilePresent) {
break;
}
}
}
}
return signatureFilePresent && signatureInfoPresent;
}
项目:ditb
文件:JarFinder.java
public static void jarDir(File dir, String relativePath, ZipOutputStream zos)
throws IOException {
Preconditions.checkNotNull(relativePath, "relativePath");
Preconditions.checkNotNull(zos, "zos");
// by JAR spec, if there is a manifest, it must be the first entry in the
// ZIP.
File manifestFile = new File(dir, JarFile.MANIFEST_NAME);
ZipEntry manifestEntry = new ZipEntry(JarFile.MANIFEST_NAME);
if (!manifestFile.exists()) {
zos.putNextEntry(manifestEntry);
new Manifest().write(new BufferedOutputStream(zos));
zos.closeEntry();
} else {
copyToZipStream(manifestFile, manifestEntry, zos);
}
zos.closeEntry();
zipDir(dir, relativePath, zos, true);
zos.close();
}
项目:openjdk-jdk10
文件:JmodTask.java
/**
* Returns the set of all packages on the given class path.
*/
Set<String> findPackages(List<Path> classpath) {
Set<String> packages = new HashSet<>();
for (Path path : classpath) {
if (Files.isDirectory(path)) {
packages.addAll(findPackages(path));
} else if (Files.isRegularFile(path) && path.toString().endsWith(".jar")) {
try (JarFile jf = new JarFile(path.toString())) {
packages.addAll(findPackages(jf));
} catch (ZipException x) {
// Skip. Do nothing. No packages will be added.
} catch (IOException ioe) {
throw new UncheckedIOException(ioe);
}
}
}
return packages;
}
项目:hadoop-oss
文件:JarFinder.java
private static void zipDir(File dir, String relativePath, ZipOutputStream zos,
boolean start) throws IOException {
String[] dirList = dir.list();
for (String aDirList : dirList) {
File f = new File(dir, aDirList);
if (!f.isHidden()) {
if (f.isDirectory()) {
if (!start) {
ZipEntry dirEntry = new ZipEntry(relativePath + f.getName() + "/");
zos.putNextEntry(dirEntry);
zos.closeEntry();
}
String filePath = f.getPath();
File file = new File(filePath);
zipDir(file, relativePath + f.getName() + "/", zos, false);
}
else {
String path = relativePath + f.getName();
if (!path.equals(JarFile.MANIFEST_NAME)) {
ZipEntry anEntry = new ZipEntry(path);
copyToZipStream(f, anEntry, zos);
}
}
}
}
}
项目:HiBangClient
文件:JavaPackageExplorer.java
private List<String> listFromJarFile(JarFile file)
{
List<String> list = new ArrayList<String>();
for (Enumeration<JarEntry> je = file.entries(); je.hasMoreElements();)
{
JarEntry entry = je.nextElement();
String s = entry.getName();
if (!s.startsWith(name)) continue;
if (!s.endsWith(".class")) continue;
s = s.substring(0, s.length() - 6).replace('/', '.');
list.add(s);
}
return list;
}
项目:gemini.blueprint
文件:BundleClassPathWildcardTest.java
private void testJarConnectionOn(Resource jar) throws Exception {
String toString = jar.getURL().toExternalForm();
// force JarURLConnection
String urlString = "jar:" + toString + "!/";
URL newURL = new URL(urlString);
System.out.println(newURL);
System.out.println(newURL.toExternalForm());
URLConnection con = newURL.openConnection();
System.out.println(con);
System.out.println(con instanceof JarURLConnection);
JarURLConnection jarCon = (JarURLConnection) con;
JarFile jarFile = jarCon.getJarFile();
System.out.println(jarFile.getName());
Enumeration enm = jarFile.entries();
while (enm.hasMoreElements())
System.out.println(enm.nextElement());
}
项目:javaide
文件:ExtensionDependency.java
/**
* <p>
* Checks the dependencies of the jar file on installed extension.
* </p>
* @param jarFile containing the attriutes declaring the dependencies
*/
public static boolean checkExtensionsDependencies(JarFile jar)
{
if (providers == null) {
// no need to bother, nobody is registered to install missing
// extensions
return true;
}
try {
ExtensionDependency extDep = new ExtensionDependency();
return extDep.checkExtensions(jar);
} catch (ExtensionInstallationException e) {
debug(e.getMessage());
}
return false;
}
项目:util4j
文件:FileUtil.java
/**
* 返回jar文件所有的目录和文件资源
* 注意jar的open和close
* @param jarFile
* @return
*/
public static final List<JarEntry> findJarEntrysByJar(JarFile jarFile)
{
List<JarEntry> list=new ArrayList<JarEntry>();
if(jarFile==null)
{
throw new RuntimeException("jarFile is Null");
}
Enumeration<JarEntry> jarEntries = jarFile.entries();
while (jarEntries.hasMoreElements())
{//遍历jar的实体对象
JarEntry jarEntry = jarEntries.nextElement();
list.add(jarEntry);
}
return list;
}
项目:openjdk-jdk10
文件:TimestampCheck.java
static void checkTimestamp(String file, String policyId, String digestAlg)
throws Exception {
try (JarFile jf = new JarFile(file)) {
JarEntry je = jf.getJarEntry("META-INF/OLD.RSA");
try (InputStream is = jf.getInputStream(je)) {
byte[] content = is.readAllBytes();
PKCS7 p7 = new PKCS7(content);
SignerInfo[] si = p7.getSignerInfos();
if (si == null || si.length == 0) {
throw new Exception("Not signed");
}
PKCS9Attribute p9 = si[0].getUnauthenticatedAttributes()
.getAttribute(PKCS9Attribute.SIGNATURE_TIMESTAMP_TOKEN_OID);
PKCS7 tsToken = new PKCS7((byte[]) p9.getValue());
TimestampToken tt =
new TimestampToken(tsToken.getContentInfo().getData());
if (!tt.getHashAlgorithm().toString().equals(digestAlg)) {
throw new Exception("Digest alg different");
}
if (!tt.getPolicyID().equals(policyId)) {
throw new Exception("policyId different");
}
}
}
}
项目:FJ-VDMJ
文件:VDMJC.java
private static String getVersion()
{
try
{
String path = VDMJC.class.getName().replaceAll("\\.", "/");
URL url = VDMJC.class.getResource("/" + path + ".class");
JarURLConnection conn = (JarURLConnection)url.openConnection();
JarFile jar = conn.getJarFile();
Manifest mf = jar.getManifest();
String version = (String)mf.getMainAttributes().get(Attributes.Name.IMPLEMENTATION_VERSION);
return version;
}
catch (Exception e)
{
return null;
}
}
项目:incubator-netbeans
文件:InstallManager.java
private static boolean willInstallInSystem (File nbmFile) {
boolean res = false;
try {
JarFile jf = new JarFile (nbmFile);
try {
for (JarEntry entry : Collections.list (jf.entries ())) {
String entryName = entry.getName ();
if (entryName.startsWith (NBM_CORE + "/") || entryName.startsWith (NBM_LIB + "/")) {
res = true;
break;
}
}
} finally {
jf.close();
}
} catch (IOException ioe) {
ERR.log (Level.INFO, ioe.getMessage (), ioe);
}
return res;
}
项目:openjdk-jdk10
文件:Utils.java
static void copyJarFile(JarInputStream in, JarOutputStream out) throws IOException {
if (in.getManifest() != null) {
ZipEntry me = new ZipEntry(JarFile.MANIFEST_NAME);
out.putNextEntry(me);
in.getManifest().write(out);
out.closeEntry();
}
byte[] buffer = new byte[1 << 14];
for (JarEntry je; (je = in.getNextJarEntry()) != null; ) {
out.putNextEntry(je);
for (int nr; 0 < (nr = in.read(buffer)); ) {
out.write(buffer, 0, nr);
}
}
in.close();
markJarFile(out); // add PACK200 comment
}
项目:openjdk-jdk10
文件:JarFileFactory.java
private Permission getPermission(JarFile jarFile) {
try {
URLConnection uc = getConnection(jarFile);
if (uc != null)
return uc.getPermission();
} catch (IOException ioe) {
// gulp
}
return null;
}
项目:enigma-vk
文件:ClassIdentifier.java
public ClassIdentifier(JarFile jar, JarIndex index, SidedClassNamer namer, boolean useReferences) {
m_index = index;
m_namer = namer;
m_useReferences = useReferences;
m_loader = new TranslatingTypeLoader(jar, index);
m_cache = Maps.newHashMap();
}
项目:osc-core
文件:ImportPluginService.java
private void validate(EntityManager em, ImportFileRequest request, File tmpUploadFolder) throws Exception {
if (!ServerUtil.isEnoughSpace()) {
throw new VmidcException(VmidcMessages.getString("upload.plugin.nospace"));
}
File[] tmpFolderList = FileUtil.getFileListFromDirectory(tmpUploadFolder.getPath());
for (File tmpFolderFile : tmpFolderList) {
String fileName = FilenameUtils.getName(tmpFolderFile.getName());
if (FilenameUtils.getExtension(fileName).equals("bar")) {
this.barFile = tmpFolderFile;
break;
}
}
if (this.barFile == null) {
throw new VmidcBrokerValidationException(
"Invalid upload folder. Should contain single .bar file.");
}
try (JarFile jar = new JarFile(this.barFile)) {
Manifest manifest = jar.getManifest();
Attributes attributes = manifest.getMainAttributes();
String symbolicName = attributes.getValue("Deployment-SymbolicName");
if (symbolicName == null) {
throw new VmidcBrokerValidationException("uploaded file does not contain Deployment-SymbolicName: " + this.barFile);
}
this.deploymentName = symbolicName + ".bar";
}
}
项目:jmt
文件:TemplatePanel.java
public void openTemplate() {
if (Defaults.getAsBoolean("showTemplateDialog")) {
JOptionPane.showMessageDialog(parent, "Each template has some default values for the parameters. "
+ "Once instantiated you may change them according to your needs.");
Defaults.set("showTemplateDialog", "false");
Defaults.save();
}
int selectedRow = templateTable.getSelectedRow();
if (selectedRow != -1 && templateTable.getRowCount() != 0) {
// close the template panel dialog
SwingUtilities.getWindowAncestor(parent).setVisible(false);
try {
File template = templates[selectedRow].getFile();
File copy = File.createTempFile(template.getName(), "");
FileUtils.copyFile(templates[selectedRow].getFile(), copy);
JarFile templateJarFile = new JarFile(copy);
// get the path of template
Manifest m = templateJarFile.getManifest();
String mainClass = m.getMainAttributes().getValue("Main-Class").toString();
URL url = new URL("file:" + copy.getAbsolutePath());
URLClassLoader myLoader = new URLClassLoader(new URL[] { url }, Thread.currentThread().getContextClassLoader());
Class<?> myClass = myLoader.loadClass(mainClass);
// instantiate the template
myTemp = (ITemplate) myClass.getConstructor(mediator.getClass()).newInstance(mediator);
// shows the input panel of the template
myTemp.showDialog(mediator.getMainWindow());
templateJarFile.close();
myLoader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
项目:JavaShell
文件:JarUtils.java
public static boolean extractFromJar(final String fileName, final String dest) throws IOException {
if (getRunningJar() == null) {
return false;
}
final File file = new File(dest);
if (file.isDirectory()) {
file.mkdir();
return false;
}
if (!file.exists()) {
file.getParentFile().mkdirs();
}
final JarFile jar = getRunningJar();
final Enumeration<JarEntry> e = jar.entries();
while (e.hasMoreElements()) {
final JarEntry je = e.nextElement();
if (!je.getName().contains(fileName)) {
continue;
}
final InputStream in = new BufferedInputStream(jar.getInputStream(je));
final OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
copyInputStream(in, out);
jar.close();
return true;
}
jar.close();
return false;
}
项目:ace
文件:ScanUtil.java
/**
* @param packNames 要扫描的包
* @return Set
*/
public static Set<Class<?>> findFileClass(String... packNames) {
Set<Class<?>> clazzs = new LinkedHashSet<Class<?>>();
for (String packName : packNames) {
String packageDirName = packName.replace('.', '/');
Enumeration<URL> dirs;
try {
dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
while (dirs.hasMoreElements()) {
URL url = dirs.nextElement();
String protocol = url.getProtocol();
if ("file".equals(protocol)) {
//扫描file包中的类
String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
getFileClass(packName, filePath, clazzs);
} else if ("jar".equals(protocol)) {
//扫描jar包中的类
JarFile jarFile = ((JarURLConnection) url.openConnection()).getJarFile();
getJarClass(jarFile, packageDirName, clazzs);
}
}
} catch (Exception e) {
e.getStackTrace();
}
}
return clazzs;
}
项目:OpenGL-Bullet-engine
文件:Globals.java
public static JarFile getJarFile(){
try{
return new JarFile(SOURCE_LOCATION);
}catch(IOException e){
e.printStackTrace();
}
return null;
}
项目:n4js
文件:JarRsrcLoader.java
private static ManifestInfo getManifestInfo() throws IOException {
Enumeration<?> resEnum;
resEnum = Thread.currentThread().getContextClassLoader().getResources(JarFile.MANIFEST_NAME);
while (resEnum.hasMoreElements()) {
try {
URL url = (URL) resEnum.nextElement();
InputStream is = url.openStream();
if (is != null) {
ManifestInfo result = new ManifestInfo();
Manifest manifest = new Manifest(is);
Attributes mainAttribs = manifest.getMainAttributes();
result.rsrcMainClass = mainAttribs.getValue(JIJConstants.REDIRECTED_MAIN_CLASS_MANIFEST_NAME);
String rsrcCP = mainAttribs.getValue(JIJConstants.REDIRECTED_CLASS_PATH_MANIFEST_NAME);
if (rsrcCP == null)
rsrcCP = JIJConstants.DEFAULT_REDIRECTED_CLASSPATH;
result.rsrcClassPath = splitSpaces(rsrcCP);
if ((result.rsrcMainClass != null) && !result.rsrcMainClass.trim().equals("")) //$NON-NLS-1$
return result;
}
} catch (Exception e) {
// Silently ignore wrong manifests on classpath?
}
}
System.err.println(
"Missing attributes for JarRsrcLoader in Manifest (" + JIJConstants.REDIRECTED_MAIN_CLASS_MANIFEST_NAME //$NON-NLS-1$
+ ", " + JIJConstants.REDIRECTED_CLASS_PATH_MANIFEST_NAME + ")"); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
项目:n4js
文件:ShippedCodeAccess.java
/**
* Unpacks desired folder structure from the JAR file into temporal location and returns that location absolute path
* as string.
*
* @param connection
* connection to the JAR file
* @param rootName
* name of the folder to be unpacked
* @return absolute path to the temporarily unpacked folder
* @throws IOException
* for IO operations
*/
protected static String recursivelyCopyContent(JarURLConnection connection, String rootName) throws IOException {
final File tempFolder = getTempFolder();
tempFolder.deleteOnExit();
final File rootFolder = new File(tempFolder, rootName);
if (rootFolder.exists()) {
FileDeleter.delete(rootFolder.toPath());
}
checkState(rootFolder.mkdir(), "Error while creating folder for Node.js environment. " + rootFolder);
checkState(rootFolder.isDirectory(), "Expected directory but got a file: " + rootFolder);
rootFolder.deleteOnExit();
try (final JarFile jarFile = connection.getJarFile()) {
for (final Enumeration<JarEntry> em = jarFile.entries(); em.hasMoreElements(); /**/) {
final JarEntry entry = em.nextElement();
// Do not process anything which is not under desired root
if (!entry.getName().startsWith(rootName)) {
continue;
}
final String fileName = entry.getName();// .substring(connection.getEntryName().length());
final File newResource = new File(tempFolder, fileName);
if (entry.isDirectory()) {
if (!newResource.exists()) {
checkState(newResource.mkdir(), "Error while creating new folder at: " + newResource);
}
} else {
checkState(newResource.createNewFile(), "Error while creating new file at: " + newResource);
try (final InputStream is = jarFile.getInputStream(entry)) {
com.google.common.io.Files.copy(() -> is, newResource);
}
}
newResource.deleteOnExit();
}
}
return rootFolder.getCanonicalFile().getAbsolutePath().replace("\\", "\\\\");
}
项目:OpenJSharp
文件:JarFileFactory.java
URLConnection getConnection(JarFile jarFile) throws IOException {
URL u;
synchronized (instance) {
u = urlCache.get(jarFile);
}
if (u != null)
return u.openConnection();
return null;
}