Java无法从父目录的子项导入

时间:2016-12-04 10:34:10

标签: java packages

好的,我正在制作一个Java程序,我有以下目录设置: - MyProgramme
| __发动机
| ______ utils
| __________ Important.java
|
| __ src
| ______主要
| __________ MainApp.java

在MainApp.java中我有一个import语句:

import Engine.utils.Important;

我也试过

import utils.Important;

无济于事。 我错过了什么蠢事吗?为什么我无法从MainApp导入重要内容?

我正在运行Windows 10,cmd java -version返回以下内容:

java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

由于

快速编辑:还尝试了MyProgramme.Engine.utils.Important; 第二次编辑:我得到的错误是java:package Engine不存在

2 个答案:

答案 0 :(得分:2)

由于您只是初学者,请将utils文件夹移至src。 然后将其用作import utils.Smth;,你应该没问题。

还考虑使用一些开发编辑器。例如IntelliJ,Eclipse或NetBeans。 导入项目,你会没事的:) 手动玩类路径对你来说不是一个好主意。

您现在可能需要在项目中实现模块化,但是您不知道如何正确使用包。阅读。

如果你已经知道所有这些东西,你应该阅读gradle或maven。简而言之,这些工具将多个项目合二为一。但是在项目的早期阶段,这将是一个主要的过度工程,并导致开发的巨大开销。

答案 1 :(得分:0)

如果你的类路径设置正确,你的第一个(import Engine.utils.Important;)就可以了。您需要确保类路径包含Engine目录的父级和main目录的父级(假设您的Main类位于包main中,而不是{ {1}},这很奇怪。

* nix示例:

如果您的层次结构的顶级为src.main,请确保您的类路径包含~/temp~/temp。例如,这很好用:

javac -cp ~/temp:~/temp/src src/main/Main.java

Windows示例:

或者在Windows上,如果您假设您的基本目录是~/temp/src,那么:

javac -cp C:\temp;C:\temp\src src\main\Main.java

假设

以上假设C:\Temp

Important.java

package Engine.utils;

Main.java

旁注:Java中压倒性的约定是包名全部小写。所以package main; 而不是engine