Community
Participate
Working Groups
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.
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)
Yep, sounds like URL handling needs fixing in that method.