javac throw包不存在但intellij可以编译和运行

时间:2018-01-16 02:44:36

标签: java intellij-idea

我有以下目录结构:

-com
  -laicode
    -class1
      -QuickSort.java
    -common
      -someclasses
  -test
    -class1
      -QuickSortTests.java

我想在QuickSort中的common包中导入QuickSortTests个类和类。因此QuickSort.java中的代码如下所示:

package com.test.class1;

import java.util.Arrays;
import com.laicode.common.*;
import com.laicode.class1.QuickSort;

class QuickSortTests {
    public static void main(String[] args) {
        int[] array0 = null;
        QuickSort.quickSort(array0);
        System.out.println(Arrays.toString(array0));

        int[] array1 = new int[0];
        QuickSort.quickSort(array1);
        ...

当我使用QuickSortTests.java在cmd中编译javac QuickSortTests.java时,会抛出错误说:

QuickSortTests.java:4: error: package laicode.common does not exist
import laicode.common.*;
QuickSortTests.java:5: error: package laicode.class1 does not exist
import laicode.class1.QuickSort;

但是在Intellij中,QuickSortTests可以毫无错误地运行。

1 个答案:

答案 0 :(得分:0)

IntelliJ已经知道您的源布局,甚至知道哪些类在哪些文件中定义。 javac没有。有多种方法可以解决问题,部分取决于您希望编译的类文件的位置,但最简单的方法可能是将源树的根目录作为工作目录,然后运行javac从那里:

javac com/test/class1/QuickSortTests.java

(或者在Windows上使用反斜杠而不是正斜杠。)

注意大小写:我假设您的类名的大小写与它们所在的文件名称之间的不匹配是您的问题中的错误。如果这些确实在您的来源中存在不同意见,那么您应该解决这个差异。