我想要做的是从 jar 加载 .class 文件(编译的类文件)作为资源流。此尝试是从 JUnit 测试用例内部进行的。
- 测试用例编译并运行没有问题所以:AFAIK资产类应该在类路径中可用
- 完整的类名需要与其在文件结构中的位置一致 SO:我们可以用目录分隔符替换包名中的点来获取类文件位置
- 我们可以使用 getResourceAsStream 方法访问当前类路径中的所有内容。
让我提供一些代码以便更好地理解。
package org.jboss.shrinkwrap.impl.nio.file;
import org.jboss.shrinkwrap.api.asset.Asset;
public class FileStoreTestCase {
// (...)
@Test
public void usedSpace(){
final Class<?> classToAdd = Asset.class;
final String pathToClass = new StringBuilder(classToAdd.getName().replace('.', File.separatorChar)).append(
".class").toString();
final InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(pathToClass);
}
问题是在上面的代码中,“in”变量总是空的。你知道为什么吗?我怎样才能让它工作?
感谢您的任何意见。