我正在尝试使用 AEM Developer Tools
插件在 Eclipse
中创建一个项目 . 该项目发布在 AEM
服务器中,可以在: Websites
和 CRXDE Lite
中看到 .
该项目是在 Eclipse
中使用 Maven Archetype-10
创建的,默认项目有两页英语和法语 . 当我在Site URL中打开页面时,我得到end page,其中应显示来自 HelloWorldModel
类的消息以及其他文本 . 但我没有收到各自 class 的消息 . 相反,我收到以下错误消息:
org.apache.sling.api.scripting.ScriptEvaluationException:org.apache.sling.scripting.sightly.SightlyException:找不到与存储库中的类com.pen.mypen.core.models.HelloWorldModel对应的文件 .
看起来CORE项目中的 Java
文件未发布或对网页不可见 . 但是3个包: Core
, Apps
和 Content
都在 Eclipse
中发布和同步 . 有没有办法检查 Java
包是否部署到 AEM
服务器?请引导我到这里我缺少的东西 . 请在下面找到错误堆栈跟踪:
Caused by: org.apache.sling.scripting.sightly.SightlyException: Cannot find a a file corresponding to class com.pen.mypen.core.models.HelloWorldModel in the repository.
at org.apache.sling.scripting.sightly.impl.compiler.SightlyJavaCompilerService.compileRepositoryJavaClass(SightlyJavaCompilerService.java:212)
at org.apache.sling.scripting.sightly.impl.compiler.SightlyJavaCompilerService.getInstance(SightlyJavaCompilerService.java:113)
at org.apache.sling.scripting.sightly.impl.engine.extension.use.JavaUseProvider.provide(JavaUseProvider.java:127)
at org.apache.sling.scripting.sightly.impl.engine.extension.use.UseRuntimeExtension.call(UseRuntimeExtension.java:84)
at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:66)
at org.apache.sling.scripting.sightly.apps.pen.components.content.helloworld.SightlyJava_helloworld.render(SightlyJava_helloworld.java:53)
at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderUnit.render(RenderUnit.java:54)
at org.apache.sling.scripting.sightly.impl.engine.SightlyScriptEngine.evaluateScript(SightlyScriptEngine.java:92)
at org.apache.sling.scripting.sightly.impl.engine.SightlyScriptEngine.eval(SightlyScriptEngine.java:78)
at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:388)
UPDATE
-
AEM - 6.2
-
Eclipse - Luna
-
Java - 1.8
3 回答
如果您使用的是SlingModels,
javax.inject
会被org.apache.sling.models.api
暴露你可以检查你的pom SlingModel依赖项
检查您正在使用的VERSION_NUMBER,然后在
/system/console/bundles
中验证是否存在相同的版本包和Active .使用AEM 6.x,Sling Model捆绑包默认可用 . 6.0将具有1.0.x的较低版本 . 通过更新pom或安装版本为VERSION_NUMBER的SlingModel软件包来修复版本可以解决您的问题 .
对于版本为1.2.2的模型的6.2,请使用以下依赖项 -
geronimo-atinject_1.0_spec
是在吊索模型1.2.2中暴露javax.inject
的那个您可以检查以下内容:
http://SERVER:PORT/system/console/bundles
显示AEM机器上安装的所有Java包 . 检查您的捆绑包是否列在那里 . 如果没有则无法安装=>检查错误日志如果您的捆绑包列在那里,请检查它的状态是否为
active
,否则可能缺少依赖关系或类似的东西 . =>单击包名称以查看wron的更多详细信息,还要检查错误日志 .如果状态为
active
,请单击该包,并查看Exported Packages
部分中是否列出了包含您的java类的包 .如果列出了软件包,则可能需要再次检查错误日志 .
UPDATE (because of AEM 6.2):
您的项目存在的问题是,对于6.2之前的AEM版本,存在对
javax.inject
版本0
的依赖关系,而现在它们需要版本1,而这并未反映在pom.xml
中 . 只需将此添加到core
项目的pom.xml
中 - 您将需要执行的操作:一切都会奏效 . 对困惑感到抱歉...
分享我的解决方案将有所帮助 . 经过AEM 6.2测试,完美无缺 .
在核心pom.xml文件中,使用“ javax.inject;version=0.0.0,* " inside " org.apache.felix ”插件标记添加Import-Package标记 .
以下是样本: