“线程中的异常”;“主要”;java.lang.reflect.InvocationTargetException
我正在使用iText PDF 5.5.11将PDF转换为XML。我已经在stackoverflow上检查了类似的答案。当我在ubuntu上使用命令行运行jar文件时,我遇到了以下错误。java版本“1.8.0_101” 线程“main”java.lang.reflect.InvocationTargetException中的异常 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 原因:java.lang.NoClassDefFoundError:org/bouncycastle/asn1/ASN1Encodable 请访问com.itextpdf.text.pdf.PdfEncryption.(PdfEncryption.java:147) 在com.itextpdf.text.pdf.PdfReader.readdecrypteddocbj上(PdfReader.java:1063) 位于com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1469) 请访问com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:751) 请访问com.itextpdf.text.pdf.PdfReader(PdfReader.java:198) 请访问com.itextpdf.text.pdf.PdfReader(PdfReader.java:236) 请访问com.itextpdf.text.pdf.PdfReader。(PdfReader.java:224) 请访问com.itextpdf.text.pdf.PdfReader(PdfReader.java:214) 位于test.pdfreader.readXml(pdfreader.java:34) 位于test.pdfreader.main(pdfreader.java:30) 我对java不太熟悉。我使用PHPExec函数从PHP调用这个jar文件。 下面是我用来将PDF转换为XML的代码“线程中的异常”;“主要”;java.lang.reflect.InvocationTargetException,java,itext,Java,Itext,我正在使用iText PDF 5.5.11将PDF转换为XML。我已经在stackoverflow上检查了类似的答案。当我在ubuntu上使用命令行运行jar文件时,我遇到了以下错误。java版本“1.8.0_101” 线程“main”java.lang.reflect.InvocationTargetException中的异常 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAcces
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.XfaForm;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class pdfreader {
public static void main(String[] args) throws IOException, DocumentException, TransformerException {
String SRC = "";
String DEST = "";
for (String s : args) {
SRC = args[0];
DEST = args[1];
}
File file = new File(DEST);
file.getParentFile().mkdirs();
new pdfreader().readXml(SRC, DEST);
}
public void readXml(String src, String dest) throws IOException, DocumentException, TransformerException {
PdfReader reader = new PdfReader(src);
AcroFields form = reader.getAcroFields();
XfaForm xfa = form.getXfa();
Node node = xfa.getDatasetsNode();
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); ++i) {
if ("data".equals(list.item(i).getLocalName())) {
node = list.item(i);
break;
}
}
list = node.getChildNodes();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty("encoding", "UTF-8");
tf.setOutputProperty("indent", "yes");
FileOutputStream os = new FileOutputStream(dest);
tf.transform(new DOMSource(node), new StreamResult(os));
reader.close();
}
}
import com.itextpdf.text.DocumentException;
导入com.itextpdf.text.pdf.AcroFields;
导入com.itextpdf.text.pdf.PdfReader;
导入com.itextpdf.text.pdf.XfaForm;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
公共类PDF阅读器{
公共静态void main(字符串[]args)引发IOException、DocumentException、TransformerException{
字符串SRC=”“;
字符串DEST=“”;
for(字符串s:args){
SRC=args[0];
DEST=args[1];
}
文件文件=新文件(DEST);
文件.getParentFile().mkdirs();
新的pdfreader().readXml(SRC,DEST);
}
public void readXml(String src,String dest)抛出IOException、DocumentException、TransformerException{
PdfReader读取器=新PdfReader(src);
AcroFields form=reader.getAcroFields();
xfaformxfa=form.getXfa();
Node Node=xfa.getDatasetsNode();
NodeList list=node.getChildNodes();
对于(int i=0;i
当您在Java项目中使用Maven时,您需要做的就是向iText添加一个依赖项。然后Maven将处理所有可传递的依赖项,如BouncyCastle。Maven拿走了所有的重物。
同样的原则也适用于其他构建系统,如Gradle等
现在,如果您想手动完成这一切并将正确的JAR放在类路径上,那么您需要做一些功课。这意味着查看每个依赖项的pom.xml
,看看它们有哪些可传递的依赖项,这些依赖项有哪些依赖项,等等
对于iText,您可以查看可以在Maven Central上找到的pom.xml
:
特别是本部分:
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.santuario</groupId>
<artifactId>xmlsec</artifactId>
<version>1.5.1</version>
<optional>true</optional>
</dependency>
</dependencies>
org.bouncycastle
bcprov-jdk15on
1.49
真的
org.bouncycastle
bcpkix-jdk15on
1.49
真的
朱尼特
朱尼特
4.8.2
测试
org.apache.santuario
xmlsec
1.5.1
真的
这说明iText 5.5.11对BouncyCastle 1.49有可选的依赖关系
BouncyCastle有一个坏名声,就是即使是很小的更新,也会随机更改和破坏其API,这就是为什么您需要非常精确地使用您的BouncyCastle版本。您好,只需将zookeeper.service文件更改为环境即可=“KAFKA_ARGS=-javaagent:/home/ec2 user/prometheus/jmx_prometheus_javaagent-0.3.1.jar=8080:/home/ec2 user/prometheus/KAFKA-0-8-2.yml”并解决问题:
Environment=“KAFKA_OPTS=-javaagent:/home/ec2 user/prometheus/jmx_prometheus\u javaagent-0.3.1.jar=8080:/home/ec2 user/prometheus/zookeer.yml“看起来您的类路径中没有BouncyCastle,基本上……如上所述,原因是:java.lang.NoClassDefFoundError:org/BouncyCastle/asn1/asn1 Encodable,如果您正在部署它,请将其添加到构建路径或部署目录中。确定。”。这意味着我必须为BouncyCastle添加jar文件?我在下载的iText jar列表中找不到它,我在构建路径中添加了bouncycastle.jar,但相同的错误
bouncycastle
jar与iText
随机使用时存在兼容性问题。请检查您添加的bouncycastle
jar版本是否与正在使用的iText
版本兼容。sun.reflect.NativeMethodAccessorImpl.invoke上线程“main”java.lang.reflect.InvocationTargetException中的异常位于sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)(NativeMethodAccessorImpl。
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.santuario</groupId>
<artifactId>xmlsec</artifactId>
<version>1.5.1</version>
<optional>true</optional>
</dependency>
</dependencies>