【问题标题】:how to determine the package name of a jar file in JavaJava中如何确定jar文件的包名
【发布时间】:2015-04-22 01:03:48
【问题描述】:

我刚刚被推上了 java。

对于已有的jar文件log4j.jar(http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip),我把它放在./lib子文件夹下,我的java源文件MyDemo.java在./jms/example文件夹下,我使用jms.example作为包名并在我的 java 文件中导入 log4j 类:

package jms.example;
import org.apache.log4j.*;

当我使用以下命令编译时,我得到了错误:

c:\JDK\bin\javac.exe -cp '.;.\lib\log4j.jar' -d .\classes -g .\jms\example\MyDemo.java

错误:找不到符号 私有最终 Logger 记录器;

上面的代码有什么问题?

另外,我想知道: * 包名与文件路径有关吗?例如,我将我的 java 文件放在 jms/example 下,这是我必须将包命名为 jms.example 的原因吗?

当我提取第三方提供的其他jar文件时,类文件的路径为jms/example,而第三方示例代码使用jms.example作为包名,与类路径jms/example一致,它们必须保持一致吗?

  • 提取 log4j.jar 时,其类文件的路径是 org/apache/log4j/,那么我是否必须使用“import org.apache.log4j.”来导入类?如果我仍然使用 jms.example 作为我的包名,导入是否会将其添加到类路径中,即它实际上变成了 jms.example.org.apache.log4j。

【问题讨论】:

  • 没有Jar文件的包名这样的东西。关于你的最后一个问题,不。这里有太多的困惑要解决。
  • @EJP:这行得通:import org.apache.log4j.Logger; 但如果我省略 org.apache.log4j 的任何部分,它就行不通;如何知道或确定 Logger 类的包名?我认为这是由 jar 文件中的文件路径决定的。
  • 关于我之前的问题:是的,它的真实包名必须与它在jar文件中的路径相同。

标签: java import


【解决方案1】:

路径不能用引号括起来;也就是命令中写错了:

-cp '.;.\lib\log4j.jar'

应该是:

-cp .;.\lib\log4j.jar

【讨论】:

    【解决方案2】:

    关于问题:
    包名与文件路径有关吗?例如,我将我的 java 文件放在 jms/example 下,这是我必须将包命名为 jms.example 的原因吗?
    不,你可以使用任何包名,例如:

    package yyyyjmsxxx.zzzzexamplexxx;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 2018-09-29
      相关资源
      最近更新 更多