database - DBIinit DatabaseTablesPreparer NullPointerException

标签 database orm intershop

我们正在尝试在 Intershop 7.9 上执行 DatabaseTablesPreparer dbinit 进程以在数据库中创建自定义对象。该准备者的过程失败,出现以下异常:

ES1 dbinit [] [app_core_a1:Class1 DatabaseTablesPreparer Version:null] com.intershop.tool.dbinit.DBInit [] [] [] [] "main" Error executing app_core_a1:Class1 DatabaseTablesPreparer Version:null java.lang.NullPointerException: null
    at java.lang.StringBuilder.<init>(StringBuilder.java:112)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.mergeEnfinityTable(DatabaseTablesPreparer.java:159)

我们对preparer进行了反编译,貌似下面这个方法返回null:

protected Cartridge getCartridge()
  {
    if (this.cartridge == null)
    {
      String cartridgeName = System.getProperty("intershop.CurrentCartridgeName");
      this.cartridge = this.cartridgeMgr.getCartridge(cartridgeName);
    }
    return this.cartridge;
  }

是否应该在某处明确定义墨盒名称?

编辑#1:

完整错误日志:

ES1 dbinit [] [] com.intershop.platform.cartridge.internal.CartridgeImpl [] [] [] [] "main" Neither Ivy descriptor nor cartridge properties found for cartridge 'app_core_a1'! 
ES1 dbinit [] [] com.intershop.platform.cartridge.internal.CartridgeImpl [] [] [] [] "main" Neither Ivy descriptor nor cartridge properties found for cartridge 'init_a1_shop'! 
ES1 dbinit [] [app_core_a1:Class1 DatabaseTablesPreparer Version:null] com.intershop.tool.dbinit.DBInit [] [] [] [] "main" Error executing app_core_a1:Class1 DatabaseTablesPreparer Version:null java.lang.NullPointerException: null
    at java.lang.StringBuilder.<init>(StringBuilder.java:112)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.mergeEnfinityTable(DatabaseTablesPreparer.java:159)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.migrateEnfinityTable(DatabaseTablesPreparer.java:126)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.migrateBeanTables(DatabaseTablesPreparer.java:92)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.migrateBeanTables(DatabaseTablesPreparer.java:71)
    at com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer.prepare(DatabaseTablesPreparer.java:53)
    at com.intershop.tool.dbinit.DBInit.execute(DBInit.java:347)
    at com.intershop.tool.common.PreparerUtils.execute(PreparerUtils.java:271)
    at com.intershop.tool.common.PreparerUtils.executePreparers(PreparerUtils.java:232)
    at com.intershop.tool.dbinit.DBInit.prepareCartridge(DBInit.java:522)
    at com.intershop.beehive.core.capi.cartridge.Cartridge.onDBInit(Cartridge.java:595)
    at com.intershop.tool.dbinit.DBInit.execute(DBInit.java:445)
    at com.intershop.tool.dbinit.DBInit.run(DBInit.java:598)
    at com.intershop.tool.dbinit.DBInit.main(DBInit.java:133)

dbinit.properties:

#
# Database Tables Preparer, implicit added by DBInit as pre.Class1
Class1 = com.intershop.beehive.core.dbinit.preparer.database.DatabaseTablesPreparer

#
# Indexes
Class2  = com.intershop.beehive.core.dbinit.preparer.database.DatabaseIndexesPreparer \
          resources/main/hr/a1/core/dbinit/scripts/dbindex.ddl

#
# Constraints
Class3  = com.intershop.beehive.core.dbinit.preparer.database.DatabaseConstraintsPreparer \
          resources/main/hr/a1/core/dbinit/scripts/dbconstraints.ddl

Dbinit 命令:

dbinit.bat --exec-id=app_core_a1:Class1

最佳答案

通过为运行 dbinit 的磁带添加 [cartridge].properties 文件解决了这个问题。添加 .properties 文件后,准备程序成功完成,并在数据库中创建表。

关于database - DBIinit DatabaseTablesPreparer NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50840653/

相关文章:

mysql - 四舍五入到最接近的 0.49 或 0.99

php - 在 mysql 中存储搜索查询

java - JPA 实体监听器和@embeddable

java - Enfinity 作为电子商务解决方案有多好?

SQL 查询将列值显示为表中的列名

正则表达式的 MySQL GROUP?

intershop - ProductLineItem FreeGift 发生了我们意想不到的变化

orm - Intershop7中通过ObjectGraph绑定(bind)管理器

node.js - 部署到 Google App Engine 时出错

php - SQLite 的轻量级 ORM