javac junit会给出“错误:package org.junit不存在”

我试图在makefile中使用JUnit,但我无法使它工作。

我的文件夹结构如下(makefile在myProject中):

myProject
|--bin
|--main
    |--org
        |--myPackage
|--test
    |--org
    |   |--myPackage
    |
    |--lib

其中/ main包含主文件,/ test包含测试文件,/ lib包含hamcrest-core-1.3.jarjunit-4.12.jar

我的makefile如下所示:

JAVAC = javac
JVM = java
JAVADOC = javadoc
MKBIN = mkdir -p bin

JAVAC_FLAGS = -g -d bin/
JAVAC_CP = -cp

SRC = main/
SRCTEST = test/
LIB = lib/*.jar

PACKAGE = org/myPackage/*.java
TARGET = bin

MAIN = org.myPackage.Main

.SUFFIXES : .class .java

all: 
    $(MKBIN) | $(JAVAC) $(JAVAC_FLAGS) $(SRC)$(PACKAGE)

test:
    $(MKBIN) | $(JAVAC) $(JAVAC_CP) $(LIB) $(SRCTEST)$(PACKAGE)

clean:
    rm -rf $(TARGET)

run:
    $(JVM) $(JAVAC_CP) $(TARGET) $(MAIN)

.PHONY: all test clean

当我运行make test我得到以下内容:

~/myProject | 18:07:29>make test
mkdir -p bin | javac -cp lib/*.jar test/org/myPackage/*.java
test/org/myPackage/MyClass.java:3: error: package org.junit does not exist
import static org.junit.Assert.*;

...

在Eclipse中,测试完美无缺。 我究竟做错了什么?



编辑找到答案

好吧,我读了一些,并做了一些修改。

首先在我的结构中:

|--bin
|--src
    |--main
    |   |--java
    |       |--myPackage
    |--test
        |--java
        |   |--myPackage
        |--lib

从这里。

而我的新makefile:

JAVAC = javac
JVM = java
JAVADOC = javadoc
MKBIN = mkdir -p bin

JAVAC_FLAGS = -g -d 'bin/'
JAVAC_CP = -cp

MAINSRC = src/main/java/
TESTSRC = src/test/java/
LIB = 'src/test/lib/*:src/main/java'

PKGSRC = myPackage/
TARGET = bin

MAIN = myPackage.Main

MAINTEST = myPackage.MainTest

.SUFFIXES : .class .java

all: 
    $(MKBIN)
    $(JAVAC) $(JAVAC_FLAGS) $(MAINSRC)$(PKGSRC)*

test:
    $(JAVAC) $(JAVAC_FLAGS) $(JAVAC_CP) $(LIB) $(TESTSRC)$(PKGSRC)*

clean:
    rm -rf $(TARGET)

run:
    $(JVM) $(JAVAC_CP) $(TARGET) $(MAIN)

run_test: 
    $(JVM) $(JAVAC_CP) $(TARGET) $(MAINTEST)

.PHONY: all test clean run run_test

所以变化是:

LIB = 'src/test/lib/*:src/main/java'
  • 引用类路径
  • *而不是* .jar
  • 类路径为main
  • 类文件的类路径不应包含*
  • Linux中的多个文件以':'分隔,';' 在Windows中
  • 从这里。

    JAVAC_FLAGS = -g -d 'bin/'
    

    我忘了包含$(JAVAC_FLAGS)进行test以便它没有针对正确的文件夹(root /而不是bin /)。

    谢谢您的帮助!

    链接地址: http://www.djcxy.com/p/82947.html

    上一篇: javac junit gives "error: package org.junit does not exist"

    下一篇: Maven: What does "mvn