小编Yau*_*aun的帖子

Java 21 下的 Parboiled:不支持的类文件主要版本 65

我使用 parboiled 作为依赖项:

// https://mvnrepository.com/artifact/org.parboiled/parboiled-java
api 'org.parboiled:parboiled-java:1.4.1'
Run Code Online (Sandbox Code Playgroud)

从 java 17 更新到 21 后,我在尝试创建解析器时在运行时收到此错误:

java.lang.RuntimeException: Error creating extended parser class: Unsupported class file major version 65
        at org.parboiled.Parboiled.createParser(Parboiled.java:58)
Run Code Online (Sandbox Code Playgroud)

版本 65 的类文件是 Java 21。解析器类现在确实使用目标 21 进行编译。为什么 parboiled 不能使用它?除了降级到目标 17 之外还有其他解决方法吗?

最小可重现示例:

构建.gradle

plugins {
    id "application"
}
apply plugin : "java" 

ext {
   javaMainClass = "test.TestParser"
}

application {
    mainClassName = javaMainClass
}
dependencies {
    
    implementation 'org.parboiled:parboiled-java:1.4.1'
}
Run Code Online (Sandbox Code Playgroud)

测试解析器.java

package test;

import org.parboiled.BaseParser;
import org.parboiled.Parboiled;
import org.parboiled.Rule;
import org.parboiled.annotations.BuildParseTree;


@BuildParseTree
public class …
Run Code Online (Sandbox Code Playgroud)

java parboiled java-21

6
推荐指数
1
解决办法
5862
查看次数

在Apache POI 4.0中为XSSFWorkbook创建自定义颜色样式

要为Apache POI 3.7及更低版本中的XSSFWorkbook应用自定义颜色,可以执行以下操作:

java.awt.Color c = new java.awt.Color (1,2,3)
XSSFCellStyle xcs = xssfWorkbook.createCellStyle();
XSSFFont headerFont = xssfWorkbook.createFont();
headerFont.setColor(new XSSFColor(c));
xcs.setFont(headerFont);
cell.setCellStyle(xcs);
Run Code Online (Sandbox Code Playgroud)

在版本4.0中,XSSFColor(java.awt.Color)被删除。仍然可以通过使用其他“黑客”来达到相同目的:

XSSFColor xc = new XSSFColor();
xc.setARGBHex(String.format("%02x%02x%02x",c.getRed(),c.getGreen(),c.getBlue())); 
headerFont.setColor(xc);
Run Code Online (Sandbox Code Playgroud)

但是,这样做的“正确”方法是什么?大多数XSSFColor方法都涉及IndexedColorMap,但我找不到任何示例来说明如何在XSSFWorkbook中使用它来设置自定义颜色。

java apache-poi

4
推荐指数
1
解决办法
2521
查看次数

如何使用 Apache POI 将 altChunk 元素添加到 XWPFDocument

我想使用 Apache POI 将 HTML 作为 altChunk 添加到 DOCX 文件中。我知道 doc4jx 可以使用更简单的 API 来做到这一点,但出于技术原因,我需要使用 Apache POI。

使用 CT 类对 xml 进行低级操作有点棘手。我可以使用以下代码创建一个 altChunk:

import java.io.File;
import java.io.FileOutputStream;

import javax.xml.namespace.QName;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.xmlbeans.impl.values.XmlComplexContentImpl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTBodyImpl;

public class AltChunkTest {
    public static void main(String[] args) throws Exception  {
        XWPFDocument doc = new XWPFDocument();
        doc.createParagraph().createRun().setText("AltChunk below:");
        QName ALTCHUNK =  new QName ( "http://schemas.openxmlformats.org/wordprocessingml/2006/main" ,  "altChunk" ) ; 
        CTDocument1 ctDoc = doc.getDocument() ; 
        CTBodyImpl ctBody =  (CTBodyImpl) ctDoc. …
Run Code Online (Sandbox Code Playgroud)

java apache-poi

1
推荐指数
1
解决办法
2169
查看次数

标签 统计

java ×3

apache-poi ×2

java-21 ×1

parboiled ×1