Bug 409613 - Cannot use WeavingURLClassLoader with HTTP aspect path
Summary: Cannot use WeavingURLClassLoader with HTTP aspect path
Status: NEW
Alias: None
Product: AspectJ
Classification: Tools
Component: Library (show other bugs)
Version: 1.7.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-05-31 13:02 EDT by Alexander Kriegisch CLA
Modified: 2020-04-22 14:04 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kriegisch CLA 2013-05-31 13:02:51 EDT
I tried to help someone on StackOverflow: http://stackoverflow.com/questions/16777015/can-weavingurlclassloader-only-weave-aspects-of-local-jars

I set up my own little project with WeavingURLClassLoader, and just like for the other guy, it works as long as my aspect.jar is on a local path, but gives me "[WeavingAdaptor] error bad aspect library" as soon as I use URLs like http://my.download.com/aspect.jar. I think the problem is in org.aspectj.weaver.tools.WeavingAdaptor.addAspectLibrary(String) when WeavingAdaptor wants to treat all URLs as Files. This should be easy enough to fix, at least I hope so.
Comment 1 Alexander Kriegisch CLA 2020-04-03 23:30:39 EDT
I just stumbled upon this one again for another, LTW-releated reason. Some feedback would be nice after 7 years. At least I would like to know if it is accepted as a bug or considered a "won't fix" issue for any reason.

BTW, I just found my old sample code reproducing the problem:

package de.scrum_master.aop.weave;

import java.io.File;
import java.net.URL;

import org.aspectj.weaver.loadtime.WeavingURLClassLoader;

public class MyWeaver {
	public static void main(String[] args) throws Exception {
		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		URL classPath = new File("../SO_AJ_WeavingURLClassloader_Java/bin").toURI().toURL();
		URL aspectPath = new URL("https://scrum-master.de/download/java");
//		URL aspectPath = new File("../SO_AJ_WeavingURLClassloader_AJ/aspect.jar").toURI().toURL();
		WeavingURLClassLoader weaver = new WeavingURLClassLoader(
			new URL[] { classPath, aspectPath },
			new URL[] { aspectPath },
			loader
		);
		Class<?> clazz = weaver.loadClass("de.scrum_master.aop.app.Application");
		clazz.getMethod("main", String[].class).invoke(null, (Object) null);
	}
}


When I run the JVM with -Dorg.aspectj.weaver.showWeaveInfo=true -Daj.weaving.verbose=true -Dorg.aspectj.tracing.messages=true I get:

Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info AspectJ Weaver Version 1.9.5 built on Thursday Nov 28, 2019 at 11:28:53 PST
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info using classpath: [C:\Program Files\Java\jdk1.8.0_152\jre\lib\resources.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\rt.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\sunrsasign.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\jsse.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\jce.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\charsets.jar, C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfr.jar, C:\Program Files\Java\jdk1.8.0_152\jre\classes, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/access-bridge-64.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/cldrdata.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/dnsns.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/jaccess.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/jfxrt.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/localedata.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/nashorn.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/sunec.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/sunjce_provider.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/sunmscapi.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/sunpkcs11.jar, /C:/Program Files/Java/jdk1.8.0_152/jre/lib/ext/zipfs.jar, /C:/Users/alexa/Documents/java-src/SO_AJ_WeavingURLClassloader_Weave/bin/, /C:/Program Files/Java/AspectJ/lib/aspectjweaver.jar, /C:/Users/alexa/Documents/java-src/SO_AJ_WeavingURLClassloader_Weave/../SO_AJ_WeavingURLClassloader_Java/binX, /download/java]
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info using aspectpath: [/download/java]
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info directory classpath entry does not exist: C:\Program Files\Java\jdk1.8.0_152\jre\lib\sunrsasign.jar
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info zipfile classpath entry does not exist: C:\Program Files\Java\jdk1.8.0_152\jre\classes
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info zipfile classpath entry does not exist: /C:/Users/alexa/Documents/java-src/SO_AJ_WeavingURLClassloader_Weave/../SO_AJ_WeavingURLClassloader_Java/binX
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace info
INFORMATION: [WeavingAdaptor] info zipfile classpath entry does not exist: /download/java
Apr 04, 2020 10:28:25 AM org.aspectj.weaver.tools.Jdk14Trace error
SCHWERWIEGEND: [WeavingAdaptor] error bad aspect library: '\download\java'
Exception in thread "main" Message: error bad aspect library: '\download\java'
org.aspectj.bridge.AbortException: bad aspect library: '\download\java'
	at org.aspectj.weaver.tools.WeavingAdaptor$WeavingAdaptorMessageHolder.handleMessage(WeavingAdaptor.java:754)
	at org.aspectj.bridge.MessageUtil.error(MessageUtil.java:82)
	at org.aspectj.weaver.tools.WeavingAdaptor.error(WeavingAdaptor.java:632)
	at org.aspectj.weaver.tools.WeavingAdaptor.addAspectLibrary(WeavingAdaptor.java:600)
	at org.aspectj.weaver.tools.WeavingAdaptor.registerAspectLibraries(WeavingAdaptor.java:575)
	at org.aspectj.weaver.tools.WeavingAdaptor.init(WeavingAdaptor.java:208)
	at org.aspectj.weaver.tools.WeavingAdaptor.<init>(WeavingAdaptor.java:122)
	at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:76)
	at de.scrum_master.aop.weave.MyWeaver.main(MyWeaver.java:14)
Comment 2 Andrew Clement CLA 2020-04-22 14:04:57 EDT
Yep, sounds like URL handling needs fixing in that method.