做openfire安装包时出现的问题

在创建openfire安装包过程中遇到了程序包缺失、JRE找不到、UnsupportedClassVersionError以及HTTPERROR 500的问题。解决方法包括:确保所有必要的jar包在lib目录中,注释掉未使用的测试代码,手动修改JRE文件名以匹配系统需求,回退到JDK1.6以兼容Linux系统,并调整项目及build.xml的编译设置。尽管如此,还存在因不同Java版本引发的死循环问题,需要进一步调查解决方案。
摘要由CSDN通过智能技术生成

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>
	



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值