1. 程序包org.jivesoftware.smack不存在
解决:
(1)在本地使用eclipse或其他工具打包,上传至服务器正常
(2)在使用ANT更新后 自动编译时 出错
导致原因是:jar缺失 (在本地使用myeclipse或其他工具打包,上传至服务器正常,一部分引用包,直接通过开发工具与项目建立联系,可以一起打压入包 ;而你直接使用SVN或其他工具下载到服务端的代码,并不能建立此链接,故 包缺失);
应该是打包时缺失smack包,这个包存在于Referenced Libraries中,拷贝,粘贴到build下的lib中,并添加就ok了
2.错误: 程序包org.junit不存在 [javac] import org.junit.After;
解决办法,junit是测试代码,可以不要,之间注释掉就行了
3.Adding JRE (linux-x86-1.6.0_18)
[install4j] install4j: compilation failed. Reason: java.io.FileNotFoundException: Could not find JRE bundle. Neither C:\progrom\install4j\jres\linux-x86-1.6.0_18.tar.gz nor C:\Users\MyPC\.install4j5\jres\linux-x86-1.6.0_18.tar.gz nor E:\workspace\openfire_src\build\installer\linux-x86-1.6.0_18.tar.gz exist.
百度 只能搜到windows-x86-1.6.0_18.tar.gz 没有linux-x86-1.6.0_18.tar.gz ,这时可以把windows-x86-1.6.0_18.tar.gz 修改为linux-x86-1.6.0_18.tar.gz 然后粘贴到相应目录即可
4.
openfire安装成功后打开openfire出现问题
java.lang.UnsupportedClassVersionError:org/jivesoftware/openfire/launcher/Launcher : Unsupported major.minor version51.0
解决思路:因为很多linux系统还不支持jdk1.7,所以要尽量避免使用jdk1.7开发程序,我将win7下的jdk重装为jdk1.6,然后将项目的javacompiler改为jdk1.6,对项目进行重新编译问题就解决了。
修改项目javacompiler的方法:在项目点右键->选择Perperties->在出现的菜单中选择JavaCompiler->最上面选中Enableproject Specific setting->然后将jdk改为jdk1.6->完成。
同时把build.xml中的jdk版本也改为1.6
这时会出现另外一个问题
HTTPERROR 500
Problem accessing /index.jsp. Reason:
java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
Caused by:
java.lang.NoSuchMethodError:java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
atorg.jivesoftware.util.ConcurrentHashSet.iterator(ConcurrentHashSet.java:90)
据说也是版本问题引起的,ConcurrentHashMap$KeySetView类的方法等是1.7以上才被支持,而编译的是1.6版本的,但是用1.7以上版本却又报出51.0的错误
这两个问题成了一个死循环,如果不改变ConcurrentHashMap$KeySetView类的用法就要找到build.xmljdk1.6以上版本installer不能编译通过的原因,大家讨论一下原因是什么?
下面是build.xml中关于jdk版本的设置
<!-- compile =============================================================================== -->
<target name="compile" depends="init" description="Compiles Openfire app code">
<mkdir dir="${compile.dir}"/>
<javac
destdir="${compile.dir}"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
>
<src path="${src.java.dir}"/>
<patternset refid="compile.sources"/>
<classpath>
<path refid="compile.dependencies"/>
</classpath>
</javac>
<javac
destdir="${overlay.compile.dir}"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
>
<src path="${overlay.src.dir}"/>
<patternset refid="compile.sources"/>
<classpath>
<path refid="compile.dependencies"/>
<span style="white-space:pre"> </span><path location="${compile.dir}"/>
</classpath>
</javac>
<!-- Compile java source -->
<javac
destdir="${jspc.classes.dest.dir}"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
includes="org/jivesoftware/openfire/admin/**/*.java"
>
<src path="${jspc.java.dest.dir}"/>
<classpath>
<pathelement path="${compile.dir}"/>
<path refid="jspc.dependencies"/>
</classpath>
</javac>
<!-- Compile all test code -->
<mkdir dir="${test.classes.dest.dir}"/>
<javac
destdir="${test.classes.dest.dir}"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
>
<src path="${src.test.java.dir}"/>
<patternset refid="test.sources"/>
<classpath>
<path refid="test.dependencies"/>
<pathelement path="${compile.dir}"/>
</classpath>
</javac>
<!-- Compile plugin source code -->
<mkdir dir="${plugin.dev.dest.dir}/@{plugin}/target/classes"/>
<javac
destdir="${plugin.dev.dest.dir}/@{plugin}/target/classes"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
>
<span style="white-space:pre"> </span><src path="@{pluginsrc}/@{plugin}/src/java"/>
<classpath>
<path refid="plugin.dependencies"/>
<!-- Jars used by the plugin to compile with -->
<fileset dir="@{pluginsrc}/@{plugin}" includes="lib/*.jar"/>
</classpath>
</javac>
<javac
destdir="@{pluginlib}/classes"
includeAntRuntime="no"
debug="on"
source="1.6"
includes="**/*.java"
>
<src path="@{pluginlib}/source"/>
<classpath>
<pathelement location="${plugin.dev.dest.dir}/@{plugin}/target/classes"/>
<path>
<path refid="plugin.dependencies"/>
<!-- Jars used by the plugin to compile with -->
<fileset dir="@{pluginsrc}/@{plugin}" includes="lib/*.jar"/>
</path>
</classpath>
</javac>
<!-- Compile java classes -->
<javac
destdir="${plugin.dev.dest.dir}/@{plugin}/target/jspc/classes"
includeAntRuntime="no"
debug="on"
source="1.6"
target="1.7"
>
<src path="${plugin.dev.dest.dir}/@{plugin}/target/jspc/java"/>
<classpath>
<path refid="jspc.dependencies"/>
<pathelement path="${compile.dir}"/>
<fileset dir="${plugin.dev.dest.dir}/@{plugin}/target" includes="lib/*.jar"/>
</classpath>
</javac>
<!-- anttasks ============================================================================== -->
<target name="anttasks" depends="init">
<mkdir dir="${anttools.target.dir}"/>
<mkdir dir="${anttools.target.dir}/classes"/>
<javac
destdir="${anttools.target.dir}/classes"
includeAntRuntime="no"
debug="on"
source="1.6"
>
<src path="${anttools.src.dir}"/>
<patternset refid="compile.sources"/>
<classpath>
<path refid="compile.dependencies"/>
</classpath>
</javac>