javac junit 给出“错误:包 org.junit 不存在”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27363310/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
javac junit gives "error: package org.junit does not exist"
提问by Joel Wiklund
I'm trying to use JUnit in a makefile but I can't get it to work.
我正在尝试在 makefile 中使用 JUnit,但我无法让它工作。
My folder structure is as follows (makefile is in myProject):
我的文件夹结构如下(makefile在myProject中):
myProject
|--bin
|--main
|--org
|--myPackage
|--test
|--org
| |--myPackage
|
|--lib
where /main contains main files, /test contains test files and /lib contains hamcrest-core-1.3.jar
and junit-4.12.jar
其中 /main 包含主文件,/test 包含测试文件,/lib 包含hamcrest-core-1.3.jar
和junit-4.12.jar
My makefile is as follows:
我的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
When I'm running make test
I get the following:
当我运行时,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.*;
...
In Eclipse the tests work perfectly fine. What am I doing wrong?
在 Eclipse 中,测试工作得非常好。我究竟做错了什么?
采纳答案by Joel Wiklund
EDIT FOUND THE ANSWER
编辑找到答案
Ok, so I read some more and made some changes.
好的,所以我阅读了更多内容并进行了一些更改。
First in my structure:
首先在我的结构中:
|--bin
|--src
|--main
| |--java
| |--myPackage
|--test
|--java
| |--myPackage
|--lib
from here.
从这里。
And my new 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
So the changes are:
所以变化是:
LIB = 'src/test/lib/*:src/main/java'
- Quotes around the classpath
- * instead of *.jar
- Classpath to main
- Classpath to class files should not include the *
- Multiple files are separated width ':' in Linux and ';' in Windows
- 围绕类路径的引用
- * 而不是 *.jar
- 到 main 的类路径
- 类文件的类路径不应包含 *
- 多个文件在 Linux 中以宽度 ':' 和 ';' 分隔 在 Windows 中
from here.
从这里。
JAVAC_FLAGS = -g -d 'bin/'
I forgot to include $(JAVAC_FLAGS)
to test
so that it didn't target the right folder (root/ instead of bin/).
我忘记包含$(JAVAC_FLAGS)
totest
以便它没有针对正确的文件夹(root/ 而不是 bin/)。
Thanks for the help!
谢谢您的帮助!