自定义字符串转拼音UDF注册函数报错

需求:自定义UDF函数,将字符串转化为拼音
异常:创建函数时报错

starrocks版本:2.3.2

函数主体:

public class UDF2Pinyin {
private static final HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
static {
    format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写输出
    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不带音标
    format.setVCharType(HanyuPinyinVCharType.WITH_V); // u 输出为 v
}

public final String evaluate(String value) {
    if (Objects.isNull(value))
        return null;

    char[] input = value.trim().toCharArray();
    StringBuilder output = new StringBuilder();
    try {
        for (char c : input) {
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] temp = PinyinHelper.toHanyuPinyinStringArray(c, format);
                output.append(temp[0]);
            }else {
                output.append(c);
            }
        }
    } catch (BadHanyuPinyinOutputFormatCombination e) {
        e.printStackTrace();
        return value;
    }
    return output.toString();
}

public static void main(String[] args) {
    UDF2Pinyin pinyin = new UDF2Pinyin();
    System.out.println(pinyin.evaluate("张三"));
}

}
pom依赖:

<dependencies>
    <!--汉语拼音-->
    <dependency>
        <groupId>com.belerweb</groupId>
        <artifactId>pinyin4j</artifactId>
        <version>2.5.1</version>
    </dependency>
</dependencies>

打包插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

将udf函数逻辑,替换为String.value.toUpperCase()测试,可以成功注册函数并使用,排除环境问题。所以不知道是不是这个转拼音的jar包和starrocks不兼容呢?

试一下2.3.3呢