有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ubuntu在终端中编译Java程序导致日志错误

我试图在终端中编译一个Java程序:

包含所有导入的长版本:

javac -classpath bin:$OSPL_HOME/jar/dcpssaj5.jar:$OSPL_HOME/jar/dcpssaj5-sources.jar:$OSPL_HOME/jar/dcpssaj-osgi-bundle.jar:$OSPL_HOME/jar/dcpssaj-sources.jar:$OSPL_HOME/jar/dcpssaj.jar:$OSPL_HOME/jar/osplconf.jar:$OSPL_HOME/jar/tooling_common.jar:$OSPL_HOME/jar/dcpsprotobuf.jar:$OSPL_HOME/jar/cmdataadapter.jar:$OSPL_HOME/jar/cmapi.jar:$OSPL_HOME/jar/ddsface.jar:Libraries/httpclient-4.5.12.jar:Libraries/jersey-client-1.19.4.jar:Libraries/jersey-client-1.19.jar:Libraries/jersey-core-1.19.4.jar:Libraries/json-simple-1.1.1.jar:Libraries/json-simple-3.1.0.jar:Libraries/jsr311-api-1.1.1.jar:Libraries/mqtt-client-0.0.6.jar:Libraries/paho-mqtt-client-1.13.0.jar -sourcepath src/ src/afarcloud/Main/afarcloud_main.java

如果没有所有的进口:

javac -classpath bin:(jar_files) -sourcepath src/ src/afarcloud/Main/afarcloud_main.java

我已经添加了我认为所有必要的JAR,但是当我试图在我的Ubuntu计算机上运行代码时,我遇到了与记录器相关的以下错误:

src/afarcloud/Log/UtilLog.java:3: error: package org.apache.log4j does not exist
import org.apache.log4j.Logger;
                       ^
src/afarcloud/Log/UtilLog.java:7: error: cannot find symbol
    private static Logger log = Logger.getLogger(UtilLog.class);
                   ^
  symbol:   class Logger
  location: class UtilLog
src/afarcloud/Log/UtilLog.java:7: error: cannot find symbol
    private static Logger log = Logger.getLogger(UtilLog.class);
                                ^
  symbol:   variable Logger
  location: class UtilLog
src/afarcloud/Log/UtilLog.java:10: error: cannot find symbol
        log = Logger.getLogger(clase);
              ^
  symbol:   variable Logger
  location: class UtilLog
4 errors

让我困惑的是,src/afarcloud下没有名为“Log”的文件夹,所以我很困惑如何继续。。。非常感谢您的帮助


共 (3) 个答案

  1. # 1 楼答案

    您缺少对org的JAR依赖。阿帕奇。log4j

    当然,这个JAR还可以有更多的依赖项。这可能是一场没完没了的游戏。也许您可以使用Maven和mavenized项目,它将为您处理依赖关系树

  2. # 2 楼答案

    不要单独提到一个目录的jar文件,而是应该使用通配符*来指定该目录的所有jar,例如

    javac -d bin -cp .:$OSPL_HOME/jar/*:Libraries/*:lib/* -sourcepath src src/afarcloud/Main/afarcloud_main.java
    

    在哪里

    1. -d bin指定将编译的类放在哪里的目录
    2. ^带有-cp-classpath的{}包含类路径中的当前目录
    3. :指定分隔符以使用类路径中的多个位置
    4. $OSPL_HOME/jar/*指定目录$OSPL_HOME/jar中的所有文件。或者,可以使用$OSPL_HOME/jar/*.jar只指定jar文件

    注意:确保在命令中指定apache-logging-log4j.jar的位置,因为错误表明您没有包含这个jar