我正在将Apache FOP 1.0项目升级到Apache FOP 2.1。在这个项目中,所有必要的文件都打包在jar文件中。
我添加了新的FopFactoryBuilder以生成FopFactory
FopFactoryBuilder builder = new FopFactoryBuilder(new File(".").toURI());
builder = builder.setConfiguration(config);
fopFactory = builder.build();
但是我所有的资源都是从文件系统上的相对路径加载的,而不是从 jar 加载的。如何将 baseURI 设置为 jar 的类路径?
谢谢。
通过将URL指定为类路径URL,如下所示:
<fo:external-graphic src="classpath:fop/images/myimage.jpg"/>
在这个例子中,文件是资源包fop.images
中的一个资源,但是实际的文件后来被打包到JAR中完全不同的地方,但是JAR是类路径的一部分,所以上面的查找是有效的。
我们还使用了 FOP 2.1,并希望实现在 jars-classpath 中找到图像。我们经过测试和使用的解决方案如下:
创建自己的ResourceResolver
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.net.URL;
import org.apache.fop.apps.io.ResourceResolverFactory;
import org.apache.xmlgraphics.io.Resource;
import org.apache.xmlgraphics.io.ResourceResolver;
public class ClasspathResolverURIAdapter implements ResourceResolver {
private final ResourceResolver wrapped;
public ClasspathResolverURIAdapter() {
this.wrapped = ResourceResolverFactory.createDefaultResourceResolver();
}
@Override
public Resource getResource(URI uri) throws IOException {
if (uri.getScheme().equals("classpath")) {
URL url = getClass().getClassLoader().getResource(uri.getSchemeSpecificPart());
return new Resource(url.openStream());
} else {
return wrapped.getResource(uri);
}
}
@Override
public OutputStream getOutputStream(URI uri) throws IOException {
return wrapped.getOutputStream(uri);
}
}
FopFactoryBuilder fopBuilder = new FopFactoryBuilder(new File(".").toURI(), new ClasspathResolverURIAdapter());
<fo:external-graphic src="classpath:com/mypackage/image.jpg" />
因为您使用我们自己的解析器,所以可以进行任何您想要的查找。
我试图将外部jar设置为hadoop类路径,但目前还没有成功。 我可以看到上面的HADOOP_CLASSPATH已经被hadoop接收 $hadoop类路径 /etc/hadoop/conf:/usr/lib/hadoop/lib/://usr/lib/hadoop/.//:/home/tom/workspace/libs/opencsv-2.3.jar://usr/lib/hadoop-hdfs
问题内容: 我有一个独立的Java项目。我已经执行了Maven全新安装。现在,我通过命令提示符进入target \ classes文件夹,并在classpath中设置所有必需的文件。现在我执行主类。结果正在显示。 现在,我通过命令提示符移回目标文件夹,并尝试执行jar文件(jar文件具有在其中定义了主类的清单文件)。 现在,我得到以下异常。我也从上面的语句中删除了classpath属性,但仍然遇到
我有一个文件夹和包结构,如下所示 null null 致以最诚挚的问候 编辑:使用windows可能有不同的语法
换句话说,现在我的单元测试的类路径设置为:。 相反,我希望将此类路径设置为:。 我曾尝试手动添加和删除依赖项类,如下所示:http://maven.apache.org/plugins/maven-surefire-plugin/examples/configuring-classpath.html,但到目前为止还不起作用。
我想解决我的类问题,你能告诉我怎么做吗? null
我用eclipse创建了一个maven项目,并用下面的命令制作了jar文件 打包 当我尝试知道我的mvn项目配置是真的还是不是这个命令 mvn exec:Java-D exec . main class = " giraph . hello world . app " 我得到这个错误: 在helloworld项目上执行目标 org.codehaus.mojo: exec-maven-plugin: