Matlab2017a是否改变了导入外部java类的方式?

Matlab2017a是否改变了导入外部java类的方式?,java,matlab,pdfbox,Java,Matlab,Pdfbox,我从Matlab调用PDFBox来计算PDF中有多少页。Matlba 2016b及之前的产品一切都非常好。我可以导入库并加载PDF而不会出现问题: import org.apache.pdfbox.pdmodel.PDDocument; pdfFile = PDDocument.load(filename); 当我在2017a中运行相同的东西时,我得到以下错误: No method 'load' with matching signature found for class 'org.ap

我从Matlab调用PDFBox来计算PDF中有多少页。Matlba 2016b及之前的产品一切都非常好。我可以导入库并加载PDF而不会出现问题:

import org.apache.pdfbox.pdmodel.PDDocument;
pdfFile = PDDocument.load(filename);

当我在2017a中运行相同的东西时,我得到以下错误:

No method 'load' with matching signature found for class 
'org.apache.pdfbox.pdmodel.PDDocument'.
我可以在导入后更改行,以便函数签名匹配:

jFilename = java.lang.String(filename);
pdfFile = PDDocument.load(jFilename.getBytes());
但是,当我调用
load
时,这会导致PDFBox出现问题:

Java exception occurred:
java.io.IOException: Error: End-of-File, expected line
at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1111)
at org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:1874)
at org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:1853)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:242)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1093)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1071)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1053)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1038)
无论我尝试加载的PDF是什么,都会出现此错误。PDFBox 1.8.10和2.0.6也有同样的例外


我还有两个问题:

  • Matlab2017a是否改变了将字符串传递给Java的方式?我在报纸上没有看到这方面的任何消息
  • 什么可能导致PDFBox错误?Matlab在2017a仍然使用Java 1.7,所以我认为PDFBox的工作方式不会有任何不同
    您调用的方法似乎来自

    在最新版本中,用于接受文件名的方法签名不再存在

    将您的代码更改为以下内容,它应该可以工作

    pdfFile = PDDocument.load(java.io.File(filename));
    

    PDDocument.load(jFilename.getBytes())的错误
    是因为PDFBox认为您正在将PDF作为字节流传递。