Apache Ant and Nuggeta



我一直在尝试在我的pc上使用nugeta服务器。但问题是,当我运行build.xml时,它会抛出system,bol未找到和其他类型的错误,有人可以帮助我吗?? ?!

下面是ant显示的编译错误:

[echo] Compiling the java source files...
[javac] Compiling 3 source files to C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServerclasses
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:5: error: package org.slf4j does not exist
[javac] import org.slf4j.Logger;
[javac]                 ^
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:6: error: package org.slf4j does not exist
[javac] import org.slf4j.LoggerFactory;
[javac]                 ^
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:8: error: package com.nuggeta.game.core.ngdl.nobjects does not exist
[javac] import com.nuggeta.game.core.ngdl.nobjects.NGame;
[javac]                                           ^
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:9: error: package com.nuggeta.game.core.ngdl.nobjects does not exist
[javac] import com.nuggeta.game.core.ngdl.nobjects.NGameMessage;

 C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:39: error: cannot find symbol
[javac]     public IncommingRequestStatus onMessage(NPlayer player, Message message) {
[javac]                                                             ^
[javac]   symbol:   class Message
[javac]   location: class GameMessageServerInterceptor
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:39: error: cannot find symbol
[javac]     public IncommingRequestStatus onMessage(NPlayer player, Message message) {
[javac]            ^
[javac]   symbol:   class IncommingRequestStatus
[javac]   location: class GameMessageServerInterceptor
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:55: error: cannot find symbol
[javac]     public IncommingRequestStatus onAdminMessage(Message message) {
[javac]                                                  ^
[javac]   symbol:   class Message
[javac]   location: class GameMessageServerInterceptor
[javac] C:UsersDevelopmentDesktopnuggetaWorkspaceNuggetaServersrccomnuggetagameserverGameMessageServerInterceptor.java:55: error: cannot find symbol
[javac]     public IncommingRequestStatus onAdminMessage(Message message) {
[javac]            ^
[javac]   symbol:   class IncommingRequestStatus
[javac]   location: class GameMessageServerInterceptor
这是构建文件
<project name="NuggetaGameServer" basedir="." default="jar">
<target name="jar" description="jar">
    <delete file="lib/myServer.jar" />
    <mkdir dir="classes" />
    <echo message="Compiling the java source files..." />
    <javac destdir="classes" debug="on" failonerror="yes" includeantruntime="false">
        <src path="src" />
    </javac>
    <jar destfile="lib/myServer.jar">
        <zipfileset dir="classes/" />
    </jar>
</target>

我已经导入了libs游戏服务器和myServer

您缺少对第三方jar的依赖项。一个明显的例子是对SLF4J日志框架的依赖:

  • 搜索org.slf4j.Logger

管理编译和运行时依赖关系在所有编程语言中都是一个重要的问题,不仅仅是java。我不能访问你的代码,但你的构建文件看起来不够。

假设您的第三方jar位于"lib"目录中,我希望是这样的:

<project name="NuggetaGameServer" basedir="." default="jar">
  <path id="compile.path">
    <fileset dir="lib"/>
  </path>
  <target name="jar" description="jar">
    <delete file="lib/myServer.jar" />
    <mkdir dir="classes" />
    <echo message="Compiling the java source files..." />
    <javac destdir="classes" debug="on" failonerror="yes" includeantruntime="false" classpathref="compile.path">
        <src path="src" />
    </javac>
    <jar destfile="lib/myServer.jar">
        <zipfileset dir="classes/" />
    </jar>
  </target>

注意javac任务上的"classpathref"属性。这会将"lib"目录中的jar文件添加到编译时类路径中。

最新更新