0

我正在尝试通过 Java 类创建 Pentaho 元数据域。使用 Pentaho automodel API 创建数据模型时,我遇到了异常。

KettleEnvironment.init();是否需要初始化(我已执行)以外的初始化?

请建议如何解决异常:

根本原因:从http://trac.spatialytics.com/geokettle/browser/trunk/src-core/org/pentaho/di/core/Props.java的 Props.java 引用的代码。但是 Props 构造函数是受保护的,而不是 public ,所以我不能实例化它。

public static Props getInstance()
        {
                if (props!=null) return props;

                throw new RuntimeException("Properties, Kettle systems settings, not initialised!");
        } 

但是 Props 构造函数是受保护的,而不是 public ,所以我不能实例化它。例外是:

Exception in thread "main" org.pentaho.pms.core.exception.PentahoMetadataException:     java.lang.RuntimeException: Properties, Kettle systems settings, not initialised!
    at org.pentaho.metadata.automodel.AutoModeler.generateDomain(AutoModeler.java:127)
    at org.abc.poc.AutoModelerScenario.<init>(Unknown Source)
    at org.abc.poc.MyApplication.main(Unknown Source)
  Caused by: java.lang.RuntimeException: Properties, Kettle systems settings, not initialised!
    at org.pentaho.di.core.Props.getInstance(Props.java:229)
    at org.pentaho.pms.util.Settings.getBusinessTableIDPrefix(Settings.java:46)
    at org.pentaho.metadata.util.Util.proposeSqlBasedLogicalTableId(Util.java:124)
    at org.pentaho.metadata.automodel.AutoModeler.createBusinessTable(AutoModeler.java:157)
    at org.pentaho.metadata.automodel.AutoModeler.generateDomain(AutoModeler.java:121)
4

2 回答 2

1

是的,除此之外KettleEnvironment.init();,您还需要调用org.pentaho.di.ui.core.PropsUI.init(Display d, String filename). 例如

PropsUI.init(new Display(), System.getenv("user.home") + "/.kettle/.spoonrc");

您还可以确保在运行代码时所有 Pentaho ui\images 文件夹都可用。

于 2014-06-11T04:47:00.240 回答
1

它可以工作,但对于更多版本,您需要:

PropsUI.init(new Display(), System.getenv("user.home") + "/.pentaho-meta/.pme-rc");
于 2017-08-01T18:14:07.757 回答