SAP HYBRIS [Y]:无法解析导入 org.zkoss
SAP HYBRIS [Y] : The import org.zkoss cannot be resolved
我正在 HYBRIS 的后台创建一个小部件。
生成扩展 trainingbackoffice
后,我将其添加到 localxtension.xml
文件中,如下所示:
<extensions>
<path dir='${HYBRIS_BIN_DIR}' autoload='false' />
<extension name='mcc' />
<extension name='adaptivesearchsolr' />
<extension name='adaptivesearchbackoffice' />
<extension name='adaptivesearchsamplesaddon' />
<extension name='commerceservicesbackoffice' />
<extension name='solrfacetsearchbackoffice' />
<extension name='solrserver' />
<!-- <extension name='yacceleratorcockpits' /> -->
<!-- <extension name='yacceleratorinitialdata' /> -->
<!-- <extension name='yacceleratorstorefront' /> -->
<extension name='ycommercewebservices' />
<extension name='ycommercewebservicestest' />
<extension name='electronicsstore' />
<extension name='apparelstore' />
<extension name='captchaaddon' />
<extension name='liveeditaddon' />
<extension name='acceleratorwebservicesaddon' />
<extension name='commerceorgsamplesaddon' />
<extension name='orderselfserviceaddon' />
<extension name='rulebuilderbackoffice' />
<extension name='couponbackoffice' />
<extension name='droolsruleengineservices' />
<extension name='couponfacades' />
<extension name='promotionenginesamplesaddon' />
<extension name='assistedservicestorefront' />
<extension name='assistedserviceyprofileaddon' />
<extension name='assistedservicecustomerinterestsaddon' />
<extension name='assistedservicepromotionaddon' />
<extension name='customerticketingaddon' />
<extension name='customersupportbackoffice' />
<extension name='eventtrackingwsaddon' />
<extension name='hybrisanalyticsaddon' />
<extension name='yprofileeventtrackingws' />
<extension name='yprofileeventadapter' />
<extension name='yprofileprocessadapter' />
<extension name='privacyoverlayeraddon' />
<extension name='yaasconfigurationbackoffice' />
<extension name='textfieldconfiguratortemplatebackoffice' />
<extension name='textfieldconfiguratortemplateaddon' />
<extension name='cmswebservices' />
<extension name='smarteditwebservices' />
<extension name='cmssmarteditwebservices' />
<extension name='permissionswebservices' />
<extension name='smarteditaddon' />
<extension name='cmssmartedit' />
<extension name='consignmenttrackingaddon' />
<extension name='consignmenttrackingmockaddon' />
<extension name='consignmenttrackingbackoffice' />
<extension name='notificationaddon' />
<extension name='customerinterestsaddon' />
<extension name='stocknotificationaddon' />
<extension name='configurablebundleaddon' />
<extension name='previewpersonalizationweb' />
<extension name='personalizationcmsweb' />
<extension name='personalizationsmartedit' />
<extension name='personalizationsampledataaddon' />
<extension name='personalizationyprofile' />
<extension name='personalizationpromotions' />
<extension name='personalizationpromotionsweb' />
<extension name='personalizationservicesbackoffice' />
<extension name='personalizationpromotionsbackoffice' />
<extension name='personalizationcmsbackoffice' />
<extension name='personalizationintegrationbackoffice' />
<extension name='assistedserviceatddtests' />
<extension name='promotionengineatddtests' />
<extension name='textfieldconfiguratortemplateatddtests' />
<extension name='configurablebundleatddtests' />
<extension name='configurablebundlecockpits' />
<extension name='pcmbackofficesamplesaddon' />
<extension name='mcc' />
<extension name="hmc" />
<extension name='trainingcockpits'/>
<extension name='trainingcore'/>
<extension name='trainingfacades'/>
<extension name='trainingfulfilmentprocess'/>
<extension name='traininginitialdata'/>
<extension name='trainingstorefront'/>
<extension name='trainingtest'/>
<extension name='trainingbackoffice'/>
</extensions>
我为小部件创建了一个控制器,如下所示:
package org.training.widgets.mysearch;
import java.util.List;
import org.training.service.SearchService;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import com.hybris.cockpitng.annotations.ViewEvent;
import com.hybris.cockpitng.util.DefaultWidgetController;
/* @author scharafi
*
*/
public class MySearchController extends DefaultWidgetController
{
private Textbox searchInput;
@WireVariable
private SearchService searchService;
@ViewEvent(componentID = "searchBtn", eventName = Events.ON_CLICK)
public void doSearch() throws InterruptedException
{
final List<String> result = searchService.search(searchInput.getText());
Messagebox.show(result.get(0));
}
public Textbox getSearchInput()
{
return searchInput;
}
public void setSearchInput(final Textbox searchInput)
{
this.searchInput = searchInput;
}
public SearchService getSearchService()
{
return searchService;
}
public void setSearchService(final SearchService searchService)
{
this.searchService = searchService;
}
}
我在 definitions.xml 中添加了如下控制器:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<widget-definition id="org.training.widgets.mysearch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/widget-definition.xsd">
<controller class="org.training.widgets.mysearch.MySearchController"/>
<name>My Search</name>
<description>My own search widget.</description>
<defaultTitle>Search</defaultTitle>
<author>CHARAFI Saad</author>
<version>0.1</version>
</widget-definition>
在执行 运行 命令 ant clean all build 后没有通过。
控制台中出现如下错误:
[yjavac] 1. ERROR in C:\hybris\hybris\bin\custom\trainingbackoffice\src\org\training\widgets\mysearch\MySearchController.java (at line 6)
[yjavac] import org.zkoss.zk.ui.event.Events;
[yjavac] ^^^^^^^^^
[yjavac] The import org.zkoss cannot be resolved
该错误适用于所有 zul 导入
更新:
这里是extensioninfo.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extensioninfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="extensioninfo.xsd">
<extension abstractclassprefix="Generated" classprefix="Trainingbackoffice" managername="TrainingbackofficeManager" managersuperclass="de.hybris.platform.jalo.extension.Extension" name="trainingbackoffice" usemaven="false">
<!-- you should add all required extensions to this list, except platform extensions which are automatically required -->
<!-- <requires-extension name="cms"/> -->
<requires-extension name="backoffice"/>
<coremodule generated="true" manager="org.training.jalo.TrainingbackofficeManager" packageroot="org.training"/>
<meta key="backoffice-module" value="true"/>
</extension>
您是如何创建自定义后台扩展的。您使用过 ybackoffice
模板吗?
问题似乎与依赖性问题有关。请验证您的 extensioninfo.xml 文件。您应该依赖于后台扩展。
extensioninfo.xml ...
<requires-extension name="backoffice"/>
您的 class 是在全局上下文中定义的,但 ZK Framework 仅在后台上下文中可用。
扩展结构:
src
←全局上下文(所有扩展都可以使用它)
backoffice/src
←后台上下文(只有后台扩展可以使用它)
将依赖于 ZK Framework 的 classes 从 src
移动到 backoffice/src
。
为什么 ZK Framework 只能在后台上下文中使用? Backoffice 是一个 Web 应用程序,可以使用位于 lib
和 web/webroot/WEB-INF/lib
目录中的库。 ZK classes 位于 web/webroot/WEB-INF/lib
目录中。后台扩展 (backoffice/src
) 在 web 上下文中加载,这就是它们可以使用 ZK 框架的原因。 src
中定义的 类 只能使用位于 lib
目录中的库,因此 ZK classes 不可用。
您可以检查您的设置是否存在 zkoss 库并且在构建过程中没有被错误删除等。有时这会导致导入问题。如果这是您需要在设置中添加所有缺少的库 post 的问题,您将能够 proceed.Hope 这将解决您的问题!
我正在 HYBRIS 的后台创建一个小部件。
生成扩展 trainingbackoffice
后,我将其添加到 localxtension.xml
文件中,如下所示:
<extensions>
<path dir='${HYBRIS_BIN_DIR}' autoload='false' />
<extension name='mcc' />
<extension name='adaptivesearchsolr' />
<extension name='adaptivesearchbackoffice' />
<extension name='adaptivesearchsamplesaddon' />
<extension name='commerceservicesbackoffice' />
<extension name='solrfacetsearchbackoffice' />
<extension name='solrserver' />
<!-- <extension name='yacceleratorcockpits' /> -->
<!-- <extension name='yacceleratorinitialdata' /> -->
<!-- <extension name='yacceleratorstorefront' /> -->
<extension name='ycommercewebservices' />
<extension name='ycommercewebservicestest' />
<extension name='electronicsstore' />
<extension name='apparelstore' />
<extension name='captchaaddon' />
<extension name='liveeditaddon' />
<extension name='acceleratorwebservicesaddon' />
<extension name='commerceorgsamplesaddon' />
<extension name='orderselfserviceaddon' />
<extension name='rulebuilderbackoffice' />
<extension name='couponbackoffice' />
<extension name='droolsruleengineservices' />
<extension name='couponfacades' />
<extension name='promotionenginesamplesaddon' />
<extension name='assistedservicestorefront' />
<extension name='assistedserviceyprofileaddon' />
<extension name='assistedservicecustomerinterestsaddon' />
<extension name='assistedservicepromotionaddon' />
<extension name='customerticketingaddon' />
<extension name='customersupportbackoffice' />
<extension name='eventtrackingwsaddon' />
<extension name='hybrisanalyticsaddon' />
<extension name='yprofileeventtrackingws' />
<extension name='yprofileeventadapter' />
<extension name='yprofileprocessadapter' />
<extension name='privacyoverlayeraddon' />
<extension name='yaasconfigurationbackoffice' />
<extension name='textfieldconfiguratortemplatebackoffice' />
<extension name='textfieldconfiguratortemplateaddon' />
<extension name='cmswebservices' />
<extension name='smarteditwebservices' />
<extension name='cmssmarteditwebservices' />
<extension name='permissionswebservices' />
<extension name='smarteditaddon' />
<extension name='cmssmartedit' />
<extension name='consignmenttrackingaddon' />
<extension name='consignmenttrackingmockaddon' />
<extension name='consignmenttrackingbackoffice' />
<extension name='notificationaddon' />
<extension name='customerinterestsaddon' />
<extension name='stocknotificationaddon' />
<extension name='configurablebundleaddon' />
<extension name='previewpersonalizationweb' />
<extension name='personalizationcmsweb' />
<extension name='personalizationsmartedit' />
<extension name='personalizationsampledataaddon' />
<extension name='personalizationyprofile' />
<extension name='personalizationpromotions' />
<extension name='personalizationpromotionsweb' />
<extension name='personalizationservicesbackoffice' />
<extension name='personalizationpromotionsbackoffice' />
<extension name='personalizationcmsbackoffice' />
<extension name='personalizationintegrationbackoffice' />
<extension name='assistedserviceatddtests' />
<extension name='promotionengineatddtests' />
<extension name='textfieldconfiguratortemplateatddtests' />
<extension name='configurablebundleatddtests' />
<extension name='configurablebundlecockpits' />
<extension name='pcmbackofficesamplesaddon' />
<extension name='mcc' />
<extension name="hmc" />
<extension name='trainingcockpits'/>
<extension name='trainingcore'/>
<extension name='trainingfacades'/>
<extension name='trainingfulfilmentprocess'/>
<extension name='traininginitialdata'/>
<extension name='trainingstorefront'/>
<extension name='trainingtest'/>
<extension name='trainingbackoffice'/>
</extensions>
我为小部件创建了一个控制器,如下所示:
package org.training.widgets.mysearch;
import java.util.List;
import org.training.service.SearchService;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Textbox;
import com.hybris.cockpitng.annotations.ViewEvent;
import com.hybris.cockpitng.util.DefaultWidgetController;
/* @author scharafi
*
*/
public class MySearchController extends DefaultWidgetController
{
private Textbox searchInput;
@WireVariable
private SearchService searchService;
@ViewEvent(componentID = "searchBtn", eventName = Events.ON_CLICK)
public void doSearch() throws InterruptedException
{
final List<String> result = searchService.search(searchInput.getText());
Messagebox.show(result.get(0));
}
public Textbox getSearchInput()
{
return searchInput;
}
public void setSearchInput(final Textbox searchInput)
{
this.searchInput = searchInput;
}
public SearchService getSearchService()
{
return searchService;
}
public void setSearchService(final SearchService searchService)
{
this.searchService = searchService;
}
}
我在 definitions.xml 中添加了如下控制器:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<widget-definition id="org.training.widgets.mysearch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/widget-definition.xsd">
<controller class="org.training.widgets.mysearch.MySearchController"/>
<name>My Search</name>
<description>My own search widget.</description>
<defaultTitle>Search</defaultTitle>
<author>CHARAFI Saad</author>
<version>0.1</version>
</widget-definition>
在执行 运行 命令 ant clean all build 后没有通过。
控制台中出现如下错误:
[yjavac] 1. ERROR in C:\hybris\hybris\bin\custom\trainingbackoffice\src\org\training\widgets\mysearch\MySearchController.java (at line 6)
[yjavac] import org.zkoss.zk.ui.event.Events;
[yjavac] ^^^^^^^^^
[yjavac] The import org.zkoss cannot be resolved
该错误适用于所有 zul 导入
更新:
这里是extensioninfo.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extensioninfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="extensioninfo.xsd">
<extension abstractclassprefix="Generated" classprefix="Trainingbackoffice" managername="TrainingbackofficeManager" managersuperclass="de.hybris.platform.jalo.extension.Extension" name="trainingbackoffice" usemaven="false">
<!-- you should add all required extensions to this list, except platform extensions which are automatically required -->
<!-- <requires-extension name="cms"/> -->
<requires-extension name="backoffice"/>
<coremodule generated="true" manager="org.training.jalo.TrainingbackofficeManager" packageroot="org.training"/>
<meta key="backoffice-module" value="true"/>
</extension>
您是如何创建自定义后台扩展的。您使用过 ybackoffice
模板吗?
问题似乎与依赖性问题有关。请验证您的 extensioninfo.xml 文件。您应该依赖于后台扩展。
extensioninfo.xml ...
<requires-extension name="backoffice"/>
您的 class 是在全局上下文中定义的,但 ZK Framework 仅在后台上下文中可用。
扩展结构:
src
←全局上下文(所有扩展都可以使用它)backoffice/src
←后台上下文(只有后台扩展可以使用它)
将依赖于 ZK Framework 的 classes 从 src
移动到 backoffice/src
。
为什么 ZK Framework 只能在后台上下文中使用? Backoffice 是一个 Web 应用程序,可以使用位于 lib
和 web/webroot/WEB-INF/lib
目录中的库。 ZK classes 位于 web/webroot/WEB-INF/lib
目录中。后台扩展 (backoffice/src
) 在 web 上下文中加载,这就是它们可以使用 ZK 框架的原因。 src
中定义的 类 只能使用位于 lib
目录中的库,因此 ZK classes 不可用。
您可以检查您的设置是否存在 zkoss 库并且在构建过程中没有被错误删除等。有时这会导致导入问题。如果这是您需要在设置中添加所有缺少的库 post 的问题,您将能够 proceed.Hope 这将解决您的问题!