Java Maven依赖不';在默认包中找不到类
我对maven有些不理解,也没有找到任何答案。所以我在这里问它,希望得到答案。Java Maven依赖不';在默认包中找不到类,java,maven,Java,Maven,我对maven有些不理解,也没有找到任何答案。所以我在这里问它,希望得到答案。 我添加了一个jar作为系统范围项目的maven依赖项。 当我在依赖插件上运行analyze onlygoal时,它确实找到了它。但每当我想使用这个jar中默认包中的类时,它都不会编译。 我对来自同一个提供者、具有相同类的jar做了同样的操作,但这次它位于一个包中,而不是默认包中,并且它可以编译。 是否有明显的遗漏或有人已经遇到相同的问题 不值得发布代码,因为我只是尝试导入一个系统依赖类。 我的POM(系统依赖项)
我添加了一个jar作为系统范围项目的maven依赖项。
当我在依赖插件上运行
analyze only
goal时,它确实找到了它。但每当我想使用这个jar中默认包中的类时,它都不会编译。我对来自同一个提供者、具有相同类的jar做了同样的操作,但这次它位于一个包中,而不是默认包中,并且它可以编译。
是否有明显的遗漏或有人已经遇到相同的问题 不值得发布代码,因为我只是尝试导入一个系统依赖类。
我的POM(系统依赖项)
4.0.0
教育算法
算法
1
C:/lib
朱尼特
朱尼特
4.8.1
测试
普林斯顿教育学院
标准库
1
系统
${lib.path}/stdlib/stdlib.jar
org.apache.maven.plugins
maven依赖插件
2.6
org.apache.maven.plugins
maven编译器插件
2.5.1
1.7
1.7
你提供了它要找的罐子了吗?听起来好像找不到编译所依据的JAR
你读过这个吗
它说:
系统:在项目开发的某个阶段需要这种依赖关系
生命周期,但是特定于系统的。不鼓励使用此范围:
这被认为是一种“高级”功能,只应
当您真正了解其使用的所有后果时使用
如果不是实际上不可能量化的话,这可能是非常困难的。这
定义范围使构建不可移植。可能是
在某些边缘情况下是必要的。系统范围包括
元素,该元素指向此对象的物理位置
依赖于本地计算机。因此,它被用来指代一些
预期存在于给定本地计算机上的工件不在
储存库;其路径可能因机器而异。系统路径
元素可以在其路径中引用环境变量:${JAVA_HOME}
比如说
因此,除非您有充分的理由使用它,否则最好将工件部署到存储库中,并像其他工件一样引用它。很抱歉打扰您,谢谢您的帮助。
我找到了我问题的答案,这与maven无关。对于1.4以上的java版本,您不能从命名包中导入默认包中的类,我使用的是1.7版本进行编译。
请发布您的pom.xml和代码,以便其他人能够提供帮助。我已经阅读了这篇文章,但感谢您提醒我们这一点。我确实提供了jar,因为maven解决了依赖关系。我首先在本地repo中安装了jar,但当我看到无法在默认包中使用类时,就将其删除了。然后我没有重新安装它,因为我正在做一些实验,因为这个项目将永远不会部署在任何环境中,但我的个人计算机:)。因此,您无法在用于将它添加到类路径的两种方法中看到类。这听起来更像是JAR的问题,而不是Maven将其添加到类路径的方式。也许这些类没有定义为公共类?您可以通过使用dependency:tree目标来确保找到它,该目标将列出所有依赖项。我想使用的所有类都是公共的,我已经按照dependency:tree的方式运行了,它列出了我需要的依赖关系。所以JAR被拾取,但类不可见,除非这些类在包中。我用同一个JAR的不同版本添加了实验依赖项。这个JAR的所有类都位于包中,而不是默认的。在本例中,类在编译时可用。奇怪的是,我以前从未见过这种情况。我仍然不清楚这是Maven的问题,是类路径生成还是java编译器的问题。听起来像是包含了正确的JAR文件,这就是Maven所做的一切。你是对的,它最终与Maven无关。我在下面找到了答案,就在回答了你最后一条评论之后。谢谢你的帮助。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>edu.algo</groupId>
<artifactId>algorithms</artifactId>
<version>1.0</version>
<properties>
<lib.path>C:/lib</lib.path>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>edu.princeton.cs</groupId>
<artifactId>stdlib</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${lib.path}/stdlib/stdlib.jar</systemPath>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>