[英]Compiling Java program in terminal causes log error
我正在尝试在终端中编译一个 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
我添加了我认为所有必需的 jars,但是当我尝试在我的 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”的文件夹,所以我很困惑如何继续……非常感谢任何帮助,谢谢。
您缺少 JAR 对 org.apache.log4j 的依赖。
当然,这个JAR可以有更多的依赖。 这可能是无休止的游戏。 也许您可以使用 Maven 和 mavenized 项目,它将为您处理依赖关系树。
看起来您缺少导入语句。 作为结论,无法找到所有 Logger 对象,也无法创建任何新实例。
尝试使用import org.apache.log4j.Logger;
.
或通过 CLI 导入。 https://logging.apache.org/log4j/2.x/download.html
而不是单独提及目录的 jar 文件,您应该使用通配符*
指定目录的所有 jars 例如
javac -d bin -cp .:$OSPL_HOME/jar/*:Libraries/*:lib/* -sourcepath src src/afarcloud/Main/afarcloud_main.java
在哪里
-d bin
指定编译后的 class 的存放目录。.
使用-cp
或-classpath
将当前目录包含在类路径中。:
指定在类路径中使用多个位置的分隔符。$OSPL_HOME/jar/*
指定目录$OSPL_HOME/jar
中的所有文件。 或者,您可以使用$OSPL_HOME/jar/*.jar
仅指定 jar 文件。 注意:确保您还在命令中指定了apache-logging-log4j.jar
的位置,因为错误表明您错过了包含此 jar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.