简体   繁体   English

在ant中运行Java项目

[英]run java project in ant

Im trying to run my java project (two programs, server and client) in ant. 我试图在ant中运行我的java项目(两个程序,服务器和客户端)。 This is my build.xml 这是我的build.xml

<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>

Server works fine, but client with gui is compiled/archived into jar successfuly, but when i run it it throws this error: /EDIT: i found out i was using wrong swt.jar version i downloaded proper now, but still getting similar error :/ 服务器工作正常,但是带有gui的客户端成功编译/存档到jar中,但是当我运行它时,它抛出此错误:/ EDIT:我发现我使用了错误的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

Im using Fedora 18 (Spherical Cow) OS. 我正在使用Fedora 18(球形母牛)操作系统。 Any suggestions are appreciated. 任何建议表示赞赏。

It looks to me like SWT is looking for the 32-bit version of those 2 jars, but all you have installed is the 64-bit version, judging from the x86_64 in the path. 在我看来,SWT正在寻找这2个jar的32位版本,但是从路径中的x86_64来看,您所安装的只是64位版本。

Also, you say you're on Fedora, but it's trying to load what appear to be Windows-related jars. 另外,您说您正在使用Fedora,但它正在尝试加载似乎与Windows相关的jar。

The 'unsatisifed link' error is likely coming from it trying to find DLLs that aren't there, instead of the .so files it should be looking for on Linux. 试图查找不存在的DLL而不是它应该在Linux上寻找的.so文件,可能是“不满意的链接”错误。

This may help: http://www.eclipse.org/swt/faq.php#missingdll 这可能会有所帮助: http : //www.eclipse.org/swt/faq.php#missingdll

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM