在ant中运行java项目
我试图在ant中运行我的java项目两个程序,服务器和客户端。这是我的build.xml在ant中运行java项目,java,ant,swt,Java,Ant,Swt,我试图在ant中运行我的java项目两个程序,服务器和客户端。这是我的build.xml <project name="myproject" default="run" basedir="."> <description>Client Server gui project</description> <property name="srcdirserver" location="src/src_server"/> <property nam
<project name="myproject" default="run" basedir=".">
<description>Client Server gui project</description>
<property name="srcdirserver" location="src/src_server"/>
<property name="srcdirclient" location="src/src_client"/>
<property name="lib" location="lib"/>
<property name="build" location="build"/>
<property name="buildserver" location="build/server"/>
<property name="buildclient" location="build/client"/>
<property name="dest_server" location="dest-server"/>
<property name="dest_client" location= "dest-client"/>
<property name="examples" location="examples"/>
<property name="doc" location="doc"/>
<!-- CLEAN -->
<target name="clean">
<delete dir="${build}"/>
<delete dir="${dest_server}"/>
<delete dir="${dest_client}"/>
</target>
<!-- COMPILE (Dummy)-->
<target name="compile" depends="clean,compileserver,compileclient,jarserver,jarclient,documentation">
</target>
<!-- DOCUMENTATION -->
<target name="documentation">
<javadoc sourcepath="${srcdirserver}" destdir="${doc}" encoding="UTF-8" charset="UTF-8"></javadoc>
</target>
<!-- COMPILE (Server code)-->
<target name="compileserver" depends="clean">
<mkdir dir="${buildserver}"/>
<javac includeantruntime="false"
srcdir="${srcdirserver}"
destdir="${buildserver}"
encoding="UTF-8"
classpath="${src}"/>
</target>
<!-- COMPILE (Client code)-->
<target name="compileclient" depends="clean">
<mkdir dir="${buildclient}"/>
<javac includeantruntime="false"
srcdir="${srcdirclient}"
destdir="${buildclient}"
encoding="UTF-8"
classpath="${lib}/swt.jar:${src}"/>
</target>
<!-- BUILD JAR (server) -->
<target name="jarserver" depends="clean,compileserver">
<mkdir dir="${dest_server}"/>
<jar destfile="${dest_server}/myserver.jar"
basedir="${buildserver}">
<manifest>
<attribute name="Main-Class"
value="game_server.main.Init"/>
</manifest>
</jar>
<mkdir dir="${dest_server}/examples"/>
<copy todir="${dest_server}/examples" >
<fileset dir="${examples}" includes="**"/>
</copy>
</target>
<!-- BUILD JAR (client) -->
<target name="jarclient" depends="clean,compileclient">
<mkdir dir="${dest_client}"/>
<jar destfile="${dest_client}/myclient.jar"
basedir="${buildclient}">
<manifest>
<attribute name="Main-Class"
value="game_client.main.Gui"/>
<attribute name="Class-Path"
value="lib/swt.jar"/>
</manifest>
</jar>
<mkdir dir="${dest_client}"/>
<mkdir dir="${dest_client}/lib"/>
<copy file="${lib}/swt.jar"
todir="${dest_client}/lib"/>
</target>
<!-- RUN -->
<target name="run" depends="compile,jarserver,jarclient">
<parallel>
<java jar="${dest_server}/myserver.jar" dir="${dest_server}" fork="true"/>
<java jar="${dest_client}/myclient.jar" dir="${dest_client}" fork="true"/>
</parallel>
</target>
</project>
服务器工作正常,但带有gui的客户端已成功编译/归档到jar中,但当我运行它时,它会抛出以下错误:
/编辑:我发现我使用了错误的swt.jar版本,我现在下载的版本是正确的,但仍然得到了类似的错误:/
run:
[java] OpenJDK 64-Bit Server VM warning: You have loaded library /home/blackened/.swt/lib/linux/x86_64/libswt-gtk-4332.so which might have disabled stack guard. The VM will try to fix the stack guard now.
[java] It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
[java] Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
[java] no swt-gtk-4332 in java.library.path
[java] no swt-gtk in java.library.path
[java] Can't load library: /home/blackened/.swt/lib/linux/x86_64/libswt-gtk-4332.so
[java] Can't load library: /home/blackened/.swt/lib/linux/x86_64/libswt-gtk.so
[java] /home/blackened/.swt/lib/linux/x86_64/libswt-gtk-4332.so: /home/blackened/.swt/lib/linux/x86_64/libswt-gtk-4332.so: Kódovanie dát v ELF súbore nie je little-endian (Possible cause: endianness mismatch)
[java]
[java] at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
[java] at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
[java] at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
[java] at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
[java] at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
[java] at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
[java] at game_client.main.Gui.open(Unknown Source)
[java] at game_client.main.Gui.main(Unknown Source)
[java] Java Result: 1
我用的是Fedora18。非常感谢您的建议。在我看来,SWT正在寻找这两个JAR的32位版本,但从路径中的x86_64判断,您只安装了64位版本 另外,您说您正在使用Fedora,但它正在尝试加载看起来与Windows相关的jar “unsatified link”错误可能来自于它试图查找不存在的DLL,而不是它应该在Linux上查找的.so文件 这可能有助于:
我发现我的电脑中缺少/usr/lib/jni文件夹,我应该安装什么?我找到了很多关于ubuntu的教程,但是没有找到关于fedora的:我自己也是一个ubuntu的家伙,但是从这个文档来看,64位JNI在默认情况下应该与fedora一起提供:。因此,您的Java安装可能是一团糟,可能的一件事是您需要JNI库的客户端。例如,在Ubuntu上,有一个名为libswt-gtk-3-jni的包,它被列为gtk+jni库的标准小部件工具包。你可能需要这样一个包裹。我可以看到一个名为libswt3-gtk2.x86_64的yum软件包也可能发挥作用,具体取决于您使用的GTK版本。您可能需要该软件包或我假设存在的libswt3-gtk3.x86_64。是的,但这可能适用于CentOS。没有可用的程序包libswt3-gtk2.x86_64。/没有可用的程序包libswt3-gtk3.x86_64。/编辑:所以我尝试卸载gtk,并在卸载过程中打破了我的fedora Dear dark:[你也许可以尝试从tty重新安装它。libswt没有任何类似名称的包包含jni?