Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven依赖不';在默认包中找不到类_Java_Maven - Fatal编程技术网

Java Maven依赖不';在默认包中找不到类

Java Maven依赖不';在默认包中找不到类,java,maven,Java,Maven,我对maven有些不理解,也没有找到任何答案。所以我在这里问它,希望得到答案。 我添加了一个jar作为系统范围项目的maven依赖项。 当我在依赖插件上运行analyze onlygoal时,它确实找到了它。但每当我想使用这个jar中默认包中的类时,它都不会编译。 我对来自同一个提供者、具有相同类的jar做了同样的操作,但这次它位于一个包中,而不是默认包中,并且它可以编译。 是否有明显的遗漏或有人已经遇到相同的问题 不值得发布代码,因为我只是尝试导入一个系统依赖类。 我的POM(系统依赖项)

我对maven有些不理解,也没有找到任何答案。所以我在这里问它,希望得到答案。
我添加了一个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>