我正在尝试使用Eclipse
插件在AEM Developer Tools
中创建项目。该项目已在AEM
服务器中发布,可在以下网址中找到:Websites
和CRXDE Lite
。
项目是使用Maven Archetype-10
中的Eclipse
创建的,默认项目有两页英语和法语。当我在Site URL中打开页面时,我会收到end page,其中应显示来自HelloWorldModel
类的消息以及其他文本。但我没有收到各自班级的消息。相反,我收到以下错误消息:
org.apache.sling.api.scripting.ScriptEvaluationException:org.apache.sling.scripting.sightly.SightlyException:找不到与存储库中的com.pen.mypen.core.models.HelloWorldModel类对应的文件。 / p>
看起来CORE项目中的Java
文件未发布或网页不可见。但是Core
,Apps
和Content
这3个包都在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)
更新
Eclipse - Luna
Java - 1.8
答案 0 :(得分:1)
您可以查看以下内容:
http://SERVER:PORT/system/console/bundles
显示AEM计算机上安装的所有Java包。检查您的捆绑包是否列在那里。如果没有那么它就无法安装=>检查错误日志active
,否则可能缺少依赖关系或类似的东西。 =>单击包名称以查看wron的更多详细信息,还要检查错误日志。active
,请单击该捆绑包,查看Exported Packages
部分中是否列出了包含您的java类的包。更新(因为AEM 6.2):
您的项目存在的问题是,对于6.2之前的AEM版本,存在对javax.inject
版本0
的依赖关系,而现在他们需要版本1并且没有反映在pom.xml
。
只需将其添加到pom.xml
项目的core
- ,这是您必须做的唯一更改:
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
一切都会奏效。对不起,混乱......
答案 1 :(得分:1)
如果您使用的是SlingModel,javax.inject
org.apache.sling.models.api
您可以检查您的pom是否存在SlingModel依赖项
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.api</artifactId>
<version>VERSION_NUMBER</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.impl</artifactId>
<version>VERSION_NUMBER</version>
<scope>provided</scope>
</dependency>
检查您正在使用的VERSION_NUMBER,然后在/system/console/bundles
中验证是否存在相同的版本包并且已激活。
使用AEM 6.x时,Sling Model捆绑包默认可用。 6.0将具有1.0.x的较低版本。通过更新pom或安装版本为VERSION_NUMBER的SlingModel软件包来修复版本可以解决您的问题。
更新6.2
对于版本为1.2.2的模型的6.2,请在依赖项中使用以下内容 -
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.api</artifactId>
<version>1.2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.models.impl</artifactId>
<version>1.2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-atinject_1.0_spec</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
geronimo-atinject_1.0_spec
是在吊索模型1.2.2中展示javax.inject
的那个
答案 2 :(得分:1)
分享我的解决方案,这将有所帮助。 经过AEM 6.2测试,完美无缺。
在核心pom.xml文件中,在“ org.apache.felix ”中添加“ javax.inject; version = 0.0.0,* ”的Import-Package标记插件标签。
以下是样本:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<!--
<Embed-Dependency>
artifactId1,artifactId2;inline=true
</Embed-Dependency>
-->
<!-- Import any version of javax.inject, to allow running on multiple versions of AEM -->
<Import-Package>javax.inject;version=0.0.0,*</Import-Package>
<Sling-Model-Packages>
com.next.sample_test_impl.core
</Sling-Model-Packages>
</instructions>
</configuration>
</plugin>