Java “错误”;安装JCE无限强度管辖权策略文件“;
我在java中使用ApachePOI库for Excel。我需要用密码打开xlsx文件。产生此错误的原因:“线程“main”org.apache.poi.EncryptedDocumentException中的异常:导出限制已到位-请安装JCE Unlimited Strength辖区策略文件”。我试着安装这个文件。但这并没有解决问题Java “错误”;安装JCE无限强度管辖权策略文件“;,java,excel,passwords,apache-poi,xlsx,Java,Excel,Passwords,Apache Poi,Xlsx,我在java中使用ApachePOI库for Excel。我需要用密码打开xlsx文件。产生此错误的原因:“线程“main”org.apache.poi.EncryptedDocumentException中的异常:导出限制已到位-请安装JCE Unlimited Strength辖区策略文件”。我试着安装这个文件。但这并没有解决问题 public static void ReadFromExcell(String file) throws IOException, GeneralSecurit
public static void ReadFromExcell(String file) throws IOException, GeneralSecurityException {
String excelFilePath = "ServerList.xlsx";
try {
NPOIFSFileSystem fileSystem = new NPOIFSFileSystem(new File(excelFilePath));
EncryptionInfo info = new EncryptionInfo(fileSystem);
Decryptor decryptor = Decryptor.getInstance(info);
if (!decryptor.verifyPassword("qwerty")) {
System.out.println("Unable to process: document is encrypted.");
return;
}
InputStream dataStream = decryptor.getDataStream(fileSystem);
Workbook workbook = new XSSFWorkbook(dataStream);
Sheet firstSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = firstSheet.iterator();
while (iterator.hasNext()) {
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println();
}
workbook.close();
dataStream.close();
fileSystem.close();
} catch (GeneralSecurityException | IOException ex) {
ex.printStackTrace();
}
}
public static void ReadFromExcell(字符串文件)抛出IOException、GeneralSecurityException{
字符串excelFilePath=“ServerList.xlsx”;
试一试{
NPOIFSFileSystem fileSystem=新的NPOIFSFileSystem(新文件(excelFilePath));
EncryptionInfo=新的EncryptionInfo(文件系统);
Decryptor Decryptor=Decryptor.getInstance(信息);
如果(!decryptor.verifyPassword(“qwerty”)){
System.out.println(“无法处理:文档已加密”);
返回;
}
InputStream数据流=decryptor.getDataStream(文件系统);
工作簿=新XSSF工作簿(数据流);
Sheet firstSheet=工作簿。getSheetAt(0);
迭代器迭代器=firstSheet.Iterator();
while(iterator.hasNext()){
行nextRow=iterator.next();
迭代器cellIterator=nextRow.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
System.out.print(cell.getStringCellValue()+“\t”);
}
System.out.println();
}
workbook.close();
dataStream.close();
close();
}捕获(一般安全例外| IOException ex){
例如printStackTrace();
}
}
我找到了解决这个问题的办法。我只替换了文件夹“jre”中的文件。还需要替换文件夹“jdk”中的文件。正确安装策略文件并遵循Oracle文档确保其安装正确后会发生什么情况?我下载了正确的8版本java的必要jar文件。然后我替换了
c:\ProgramFiles\java\jre\lib\security
中的文件,但没有任何更改((也许我应该尝试重新安装jre?