2

我在 Excel 中有一个 Drools 决策表,规则中使用的一些字符串有“Á”字符。当我从这个决策表在 Guvnor 中构建规则包时,我在规则源中得到错误的字符。

例如,

在电子表格中 -> Área de Lazer|POR,

在内置的 drl 文件中 -> �rea de Lazer|POR

在这种情况下,有什么方法可以调整 Guvnor 以支持 UTF-8?有没有人遇到过类似的问题?

谢谢


@Geoffrey De Smet

你好,

我在 ExcelParser.java 中添加了以下代码:

WorkbookSettings ws = new WorkbookSettings();
        ws.setEncoding("UTF-8");
        Workbook workbook = Workbook.getWorkbook( inStream , ws);

我已经从 git-hub 成功构建了 drools 项目,但是当我尝试使用 maven 2.2.1 或 maven 3.0.3 构建 guvnor-webapp 来测试它时,我得到了同样的错误:

[错误] 致命错误 [信息] ------------------------------------------ ------------------------------ [信息] org/apache/commons/io/IOUtils org.apache.commons.io。 IOUtils [INFO] ---------------------------------------------- -------------------------- [INFO] 在 org.codehaus 跟踪 java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils。 mojo.gwt.AbstractGwtMojo.checkGwtUserVersion(AbstractGwtMojo.java:289) at org.codehaus.mojo.gwt.AbstractGwtMojo.getGwtUserJar(AbstractGwtMojo.java:251) at org.codehaus.mojo.gwt.shell.CompileMojo.compile(CompileMojo. java:268) 在 org.codehaus.mojo.gwt.shell.CompileMojo.doExecute(CompileMojo.java:255) 在 org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute(AbstractGwtShellMojo.java:119) 在 org.apache .maven.plugin.DefaultPluginManager。org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 的 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556) 的 executeMojo(DefaultPluginManager.java:490) .maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java :348) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 在 org.apache.maven 的 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)。DefaultMaven.execute(DefaultMaven.java:138) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 在 org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method .invoke(Method.java:597) 在 org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 在 org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 在 org.codehaus.classworlds。 org.codehaus.classworlds.Launcher.main(Launcher.java:375) 上的 Launcher.mainWithExitCode(Launcher.java:430) 原因:java.lang。ClassNotFoundException: org.apache.commons.io.IOUtils at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader. java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在 org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java :255) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) 在 org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 在 java.lang.ClassLoader.loadClass(ClassLoader.java: 248)URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java :307) 在 org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm. java:274) 在 org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java :307) 在 org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm. java:274) 在 org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) at org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) 在 org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 在 java.lang.ClassLoader.loadClass(类加载器.java:248)findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195) at org.codehaus.classworlds.DefaultClassRealm.loadClass (DefaultClassRealm.java:255) 在 org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:274) 在 org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) 在 java.lang.ClassLoader.loadClass(类加载器.java:248)DefaultClassRealm.loadClass(DefaultClassRealm.java:274) at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) at java.lang.ClassLoader.loadClass(ClassLoader.java:248)DefaultClassRealm.loadClass(DefaultClassRealm.java:274) at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214) at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

对此的任何帮助将不胜感激!

谢谢!

PS 我已阅读自述文件,并按照描述进行。

4

1 回答 1

2

由于 excel 文件编码因区域设置而异,因此该问题仍然存在且不易修复。

一种已知的解决方法(由 Amer Zec 建议)是启动运行 Guvnor 的应用服务器-Djxl.encoding=cp1252(如果您是西欧人,则使用除 之外的其他编码cp1252)。

于 2011-04-01T09:30:42.050 回答