Error al intentar instalar un AMP

cancel
Showing results for 
Search instead for 
Did you mean: 
magarcia_sm
Active Member II

Error al intentar instalar un AMP

Hola

Estamos siguiendo el tema 2 del libro Alfresco Developer, donde lo que intentamos es seguir un ejemplo para externder el modelo. Anteriormente lo realizabamos creando los ficheros XML directametne, pero en esta ocasion queremos apredner como realizarlo mediante la instalación de un fichero AMP en el war de alfresco.

Para ello en el proyecto que estamos realizando en Ecllipse hemos creado las carpetas config/alfresco/extension/model donde hemos dejado el archivo SCModel.xml. Después hemos añadido los archivos someco-model-context.xml y web-client-config-custom.xml en el directorio config/alfresco/extension.

Posteriormente dentro de la carpeta SRC del proyecto hemos creado las caretas Java y web, pero por el momento no hemos incluido ningún archivo aquí.


Hemos añadido el siguiente archivo build.xml que hemos retocado nosotros (no se si estará aquí el fallo)



<?xml version="1.0"?>

<project name="AMP Test2" default="package-amp" basedir=".">
   
    <property name="project.dir" value="."/>
    <property name="build.dir" value="${project.dir}/build"/>
    <property name="config.dir" value="${project.dir}/config"/>
    <property name="jar.file" value="${build.dir}/lib/temp2.jar"/>
    <property name="amp.file" value="${build.dir}/dist/temp2.amp"/>
   
    <target name="mkdirs">
        <mkdir dir="${build.dir}/dist" />
        <mkdir dir="${build.dir}/lib" />
    </target>
   
    <path id="class.path">
        <dirset dir="${build.dir}" />
        <fileset dir="../../lib/server" includes="**/*.jar"/>
    </path>

    <target name="compile">
        <mkdir dir="${build.dir}/classes" />
        <javac classpathref="class.path" srcdir="${project.dir}/src/java" destdir="${build.dir}/classes" />
    </target>
   
    <target name="package-jar" depends="compile">
        <jar destfile="${jar.file}" >
            <fileset dir="${build.dir}/classes" excludes="**/custom*,**/*Test*" includes="**/*.class" />
        </jar>
    </target>
   
    <target name="package-amp" depends="mkdirs, package-jar" description="Package the Module" >
        <zip destfile="${amp.file}" >
            <fileset dir="${project.dir}/build" includes="lib/*.jar" />
            <fileset dir="${project.dir}" includes="config/**/*.*" excludes="**/module.properties" />
           <!–
               <fileset dir="${project.dir}/config/alfresco/module/sdkDemoAmp" includes="module.properties" />
            –>
        </zip>
    </target>

    <target name="update-war" depends="package-amp" description="Update the WAR file.  Set -Dwar.file=…" >
        <echo>Installing SDK Demo AMP into WAR</echo>
        <java dir="." fork="true" classname="org.alfresco.repo.module.tool.ModuleManagementTool">
            <classpath refid="class.path" />
            <arg line="install ${amp.file} ${war.file} -force -verbose"/>
        </java>
    </target>

</project>



Al realizar el Ant-Build en el archivo build.xml del proyecto, se nos genera el archivo amp sin problemas, pero nos da el mensaje



      Warning: skipping jar archive D:\WSEclipse\Alfresco\Alfresco_temp2\build\lib\temp2.jar because no files were included.



El tema es que cuando intentamos instalar el archivo amp en el alfresco.war siguiendo la instrucción

java -jar temp2.jar install temp2.amp alfresco.war -verbose

nos aparece este error y no sabemos por que



"Exception in thread "main" java.lang.NullPointerException
    at sun.launcher.LauncherHelper.getMainClassPromJar<Unknow Source>
    at sun.launcher.LauncherHelper.checkAndLoadMain<Unknow Source>"


¿Alguna idea de porqué puede ser?


Os paso un pantallazo de la estructura del proyecto en Eclipse por si puede aclarar algo.

Quizá algo que esté mal en el archivo build.xml o build.properties?
Agradecería también alguna sitio donde explicase como configurar paso a paso dichos archivos.

Muchas Gracias.
2 Replies
cristinamr
Advanced

Re: Error al intentar instalar un AMP

Buenas magarcía

Si no recuerdo mal Jeff Potts, el autor, publicó un paquete con las instrucciones/archivos en su momento. Hoy en día puedes encontrarlo aquí Échale un vistazo y nos comentas, pero vamos que seguro que con los archivos por delante será más sencillo.
Por otra parte, una recomendación: Para descartar que no sea problema del amp, como lo construyes, siempre puedes hacer uno a mano y ejecutarlo con el apply_amps.sh, aunque no recuerdo bien si en la 3.0 tenías ese archivo… Sino puedes usar el alfresco-mmt.jar (instrucciones aquí) =)

Ve contándonos y a medidas que avances te echamos una mano.

Un saludo!
--
VenziaIT: helping companies since 2005! Our ECM products: AQuA & Seidoc
magarcia_sm
Active Member II

Re: Error al intentar instalar un AMP

Al final hemos solucionado el problema con el siguiente código que se encarga de hacer todo.
Compila y crea los archivos .jar y .war y hace directamente un deploy del war en Alfresco.
Espero que le pueda servir de ayuda a alguien.

Saludos.


<?xml version="1.0"?>

<project name="testing" default="deploy-war" basedir=".">
   <!– Project directories, REPLACE WITH YOUR SETTINGS –>
   <property name="project.dir" value="." />
   <property name="build.dir" value="${project.dir}/build" />
   <property name="jar.file" value="${build.dir}/lib/testing1.jar" />
   <property name="amp.file" value="${build.dir}/dist/testing1.amp" />
   <property name="tomcat.dir" value="D:\\Alfresco_temp2\\tomcat\" />
   <property name="war.file" value="${tomcat.dir}/webapps/alfresco.war" />
   <property name="lib.dir" value="D:\\Alfresco_SDK\\SDK3\\lib\\server" />

   <!– Path to essential libraries –>
   <path id="class.path">
      <dirset dir="${build.dir}" />
      <fileset dir="${lib.dir}" includes="**/*.jar" />
   </path>

   <!– Creates a build directory where the amp and jar files will be located –>
   <target name="mkdirs">
      <mkdir dir="${build.dir}/dist" />
      <mkdir dir="${build.dir}/lib" />
      
   </target>

   <!–<target name="package-jar" depends="compile">–>
   
   <target name="compile">
         <mkdir dir="${build.dir}/classes" />
         <javac classpathref="class.path" srcdir="${project.dir}/source" destdir="${build.dir}/classes" debug="true" debuglevel="lines,vars,source" />
      </target>
   <target name="package-jar" depends="compile">
      <delete file="${jar.file}" />

      <jar destfile="${jar.file}">
         <fileset dir="${build.dir}" includes="**/faces-config.xml, **/*.class" />
      </jar>
   </target>

   <target name="package-amp" depends="mkdirs, package-jar" description="Packages the amp">
      <zip destfile="${amp.file}">
         <fileset dir="${project.dir}/build" includes="lib/*.jar" />
         <fileset dir="${project.dir}" includes="module.properties" />
         <fileset dir="${project.dir}" includes="somecoactions.properties" />
         <fileset dir="${project.dir}" includes="config/**/*.*" />
      </zip>
   </target>

   <!– Use when checking what deployment of an AMP will do without actually committing the deployment –>
   <target name="preview-install">
      <echo>Preview installation of AMP</echo>
      <java dir="." fork="true" classname="org.alfresco.repo.module.tool.ModuleManagementTool">
         <classpath refid="class.path" />
         <arg line="install ${amp.file} ${war.file} -preview -force -verbose" />
      </java>
   </target>

   <!– Deploys the war to Alfresco –>
   <target name="deploy-war" depends="package-amp">
      <java dir="." fork="true" classname="org.alfresco.repo.module.tool.ModuleManagementTool">
         <classpath refid="class.path" />
         <arg line="install ${amp.file} ${war.file} -force -verbose" />
      </java>
   </target>

</project>