Я просто решил уменьшить свои проекты, удалив дублирующиеся классы. Следовал этому совету о том, как делиться пакетами между проектами и работал нормально.
Однако это породило странную ошибку. При запуске тестов для всего проекта (Alt + F6) я получил несколько ошибок в выводе компиляции:
ant -f ...nbPath\\CurrentProject -Dnb.internal.action.name=test -Dignore.failing.tests=true -Dnb.wait.for.caches=true test
init:
Deleting: ...nbPath\CurrentProject\build\built-jar.properties
deps-jar:
Updating property file: ...nbPath\CurrentProject\build\built-jar.properties
SharedPackageProject.init:
SharedPackageProject.deps-jar:
Updating property file: ...nbPath\CurrentProject\build\built-jar.properties
SharedPackageProject.init:
SharedPackageProject.deps-clean:
Updating property file: ...nbPath\SharedPackageProject\build\built-clean.properties
Deleting directory ...nbPath\SharedPackageProject\build
SharedPackageProject.clean:
Created dir: ...nbPath\SharedPackageProject\build\classes
Created dir: ...nbPath\SharedPackageProject\build\empty
Created dir: ...nbPath\SharedPackageProject\build\generated-sources\ap-source-output
Compiling 2 source files to ...nbPath\SharedPackageProject\build\classes
SharedPackageProject.compile:
Created dir: ...nbPath\SharedPackageProject\dist
Copying 1 file to ...nbPath\SharedPackageProject\build
Copy libraries to ...nbPath\SharedPackageProject\dist\lib.
Building jar: ...nbPath\SharedPackageProject\dist\SharedPackageProject.jar
To run this application from the command line without Ant, try:
java -jar "...nbPath\SharedPackageProject\dist\SharedPackageProject.jar"
SharedPackageProject.jar:
init:
deps-clean:
Updating property file: ...nbPath\CurrentProject\build\built-clean.properties
SharedPackageProject.init:
SharedPackageProject.deps-clean:
Updating property file: ...nbPath\CurrentProject\build\built-clean.properties
Deleting directory ...nbPath\SharedPackageProject\build
SharedPackageProject.clean:
Deleting directory ...nbPath\CurrentProject\build
clean:
Created dir: ...nbPath\CurrentProject\build\classes
Created dir: ...nbPath\CurrentProject\build\empty
Created dir: ...nbPath\CurrentProject\build\generated-sources\ap-source-output
Compiling 11 source files to ...nbPath\CurrentProject\build\classes
...nbPath\CurrentProject\src\CurrentProject\Dao.java:13: error: package SharedPackageProject does not exist
import SharedPackageProject.SmartDatabase;
...nbPath\CurrentProject\src\CurrentProject\Dao.java:22: error: cannot find symbol
Затем последовала другая серия error: cannot find symbol
, и из-за этих ошибок тесты не запустились. Однако, если я перезапущу все тесты (снова Alt + F6), они будут работать!
На этот раз ошибок нет, вот вывод
ant -f ...nbPath\\CurrentProject -Dnb.internal.action.name=test -Dignore.failing.tests=true -Dnb.wait.for.caches=true test
init:
deps-jar:
Updating property file: ...nbPath\CurrentProject\build\built-jar.properties
SharedPackageProject.init:
SharedPackageProject.deps-jar:
Created dir: ...nbPath\SharedPackageProject\build
Updating property file: ...nbPath\CurrentProject\build\built-jar.properties
Created dir: ...nbPath\SharedPackageProject\build\classes
Created dir: ...nbPath\SharedPackageProject\build\empty
Created dir: ...nbPath\SharedPackageProject\build\generated-sources\ap-source-output
Compiling 2 source files to ...nbPath\SharedPackageProject\build\classes
SharedPackageProject.compile:
Created dir: ...nbPath\SharedPackageProject\dist
Copying 1 file to ...nbPath\SharedPackageProject\build
Copy libraries to ...nbPath\SharedPackageProject\dist\lib.
Building jar: ...nbPath\SharedPackageProject\dist\SharedPackageProject.jar
To run this application from the command line without Ant, try:
java -jar "...nbPath\SharedPackageProject\dist\SharedPackageProject.jar"
SharedPackageProject.jar:
Compiling 11 source files to ...nbPath\CurrentProject\build\classes
compile:
Created dir: ...nbPath\CurrentProject\build\test\classes
Compiling 4 source files to ...nbPath\CurrentProject\build\test\classes
compile-test:
Created dir: ...nbPath\CurrentProject\build\test\results
Testsuite: CurrentProject.DaoTest
...My tests output
Мне удалось воспроизвести ошибку, запустив тест для одного класса (Ctrl + F6), а затем снова запустив все тесты (Alt + F6). Я думаю, что это запускает чистую компиляцию, которая очищает папку заранее.
Я предполагаю, что Netbeans пытается запустить тесты, прежде чем мои тестовые классы смогут найти банку импортированного проекта. И если я перезапущу, он пропустит очистку компиляции, чтобы сэкономить время, и мой текущий проект сможет найти другой jar, который уже там.
В любом случае, это раздражает, но легко обойти.
Product Version: NetBeans IDE 8.1 (Build 201510222201)
Updates: NetBeans IDE is updated to version NetBeans 8.1 Patch 1
Java: 1.8.0_25; Java HotSpot(TM) 64-Bit Server VM 25.25-b02
Runtime: Java(TM) SE Runtime Environment 1.8.0_25-b18
Я прочитаю об Ant, чтобы понять процедуру сборки. Но любая помощь будет оценена.