【问题标题】:Is it possible for me to instantiate the Journal Article object and set each property without constuctor?我是否可以实例化 Journal Article 对象并在没有构造函数的情况下设置每个属性?
【发布时间】:2025-11-30 09:05:01
【问题描述】:

当我这样做时,当我运行 build.xml 并部署时它不会编译,

我想这样做,因为它看起来比使用 JournalArticleLocalServiceUtil.addArticle 调用巨大的方法要好得多。

JournalArticle journalArticle = new JournalArticleImpl();
journalArticle.setDescription(description);

有人知道在 Liferay 6 中是否可以实现吗?

编辑:这是我得到的输出:

Buildfile: C:\opt\liferay-six1-dev\code\portlets\migration-portlet\build.xml
compile:
merge:
compile-java:
    [javac] Compiling 1 source file to C:\opt\liferay-six1-dev\code\portlets\migration-portlet\docroot\WEB-INF\classes
    [javac] C:\opt\liferay-six1-dev\code\portlets\migration-portlet\docroot\WEB-INF\src\com\liferay\migration\importdata\JournalArticleImport.java:138: cannot find symbol
    [javac] symbol  : class JournalArticle
    [javac] location: class com.liferay.migration.importdata.JournalArticleImport
    [javac]     private JournalArticle createJournalArticle(ExportedJournalArticle article) {
    [javac]             ^
    [javac] C:\opt\liferay-six1-dev\code\portlets\migration-portlet\docroot\WEB-INF\src\com\liferay\migration\importdata\JournalArticleImport.java:142: cannot find symbol
    [javac] symbol  : class JournalArticle
    [javac] location: class com.liferay.migration.importdata.JournalArticleImport
    [javac]         JournalArticle journalArticle = new JournalArticleImpl();
    [javac]         ^
    [javac] C:\opt\liferay-six1-dev\code\portlets\migration-portlet\docroot\WEB-INF\src\com\liferay\migration\importdata\JournalArticleImport.java:142: cannot find symbol
    [javac] symbol  : class JournalArticleImpl
    [javac] location: class com.liferay.migration.importdata.JournalArticleImport
    [javac]         JournalArticle journalArticle = new JournalArticleImpl();
    [javac]                                             ^
    [javac] 3 errors

BUILD FAILED
C:\opt\liferay-six1-dev\code\build-common-plugin.xml:403: The following error occurred while executing this line:
C:\opt\liferay-six1-dev\code\build-common.xml:94: Compile failed; see the compiler error output for details.

Total time: 1 second

【问题讨论】:

  • 您声称它无法编译,但在我看来它应该如此。当你尝试时会发生什么?
  • 编辑问题,当我运行 build.xml 并部署时
  • 你还没有说会发生什么...或者你是否能够以其他方式编译。请阅读tinyurl.com/so-hints - 如果您可以避免我们不得不猜测发生了什么,您一定会更快地得到答案...
  • 其状态缺失的类不缺失
  • 嗯,所以你说......你的 build.xml 是什么样的?你在哪里告诉它有关 liferay 库的信息?

标签: java liferay liferay-6 web-content


【解决方案1】:

正如 Jon 提到的,如果您使用插件 SDK,则不会复制实现类的库/jar。不幸的是,您不能直接从插件创建 JournalArticle 对象,您必须使用 JournalArticleLocalServiceUtil 来创建对象。

【讨论】:

    【解决方案2】:

    好的,现在我们遇到了编译器故障,看起来您只是在类路径上没有正确的库。

    此外,您似乎在 com.liferay 包下创建自己的类 - 除非您正在为 Liferay 构建代码,否则您不应该这样做。 Liferay。如果您只构建使用 Liferay 的代码,您应该在您自己的组织包下构建它。

    【讨论】:

    • 问题是它们是正确的,因为我在其他地方使用它们!我可以使用构造函数创建对象,但不是这样。没有意义
    • @ElizabethHamlet:“其他地方”是什么意思?在同一个版本的其他地方?请注意,您已经使用构造函数,因此不清楚您的意思。如果您能给我们提供更多信息,这将非常有帮助 - 理想情况下是一个简短但完整有效的代码示例,以及一个类似的简短但完整的代码示例,但不起作用。 (整个类,包括导入。它不需要做任何有用的事情。)
    • 是的,在同一个版本中。如果我调用 JournalArticleLocalServiceUtil.addArticle(userId, groupId, articleId, autoArticleId, version, title, description, content, type, structureId, templateId, displayDateMonth, displayDateDay, displayDateYear, displayDateHour, displayDateMinute, expirationDateMonth, expirationDateDay, expirationDateYear, expirationDateHour , expireDateMinute, neverExpire, reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour, reviewDateMinute, neverReview, indexable, smallImage, smallImageURL, smallFile, images, articleURL, serviceContext);
    • 我使用的是我自己的组织路径,但我在网上发帖时删除了它
    • @ElizabethHamlet:请编辑您的问题,而不是将代码放入 cmets。请注意,您的评论中的代码不是调用构造函数 - 它调用的是addArticle 方法。您问题中的代码 is 调用构造函数。此外,在一个简短但完整的示例中使用一些虚拟包名称也很好 - 但让它以 com.liferay 开头只会增加混乱。
    最近更新 更多