Reflectionsライブラリに問題があります。特定のインターフェイスを実装するすべてのクラスを動的にロードしようとしています。これらのクラス(Java 8)でラムダ式を使用しない限り、すべてが正常に機能します(すべてのクラスがロードされます)。lib バージョンをアップグレードしようとしましたが、効果は同じでした (java.io.IOException: 無効な定数タイプ: 18)。
pom.xml の依存関係とビルド
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.19.0-GA</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
除外なしは同じ効果です。
コード:
URL jarUrl = jarFile.toURI().toURL();
URLClassLoader child = new URLClassLoader(new URL[]{jarUrl}, this.getClass().getClassLoader());
ConfigurationBuilder builder = new ConfigurationBuilder()
.addClassLoader(child)
.addUrls(jarUrl)
.setScanners(new SubTypesScanner());
Reflections r = new Reflections(builder);
return r.getSubTypesOf(cls);
ラムダ式でクラスをロードするにはどうすればよいですか?
PS英語でごめんなさい:)