2016-09-14 6 views
1

Я знаю, что на эту тему есть много других ответов SO, и хотя this question, кажется, был самым полезным, ни одно из этих решений не привело меня к полному решению моей проблемы. Поэтому я мог бы немного помочь.Maven: сбой компиляции mvn. «пакет не существует». Зависимость включена в maven, другие решения SO не работают. Что мне не хватает?

У меня есть проект Netbeans, созданный кем-то, кто работал в моей компании передо мной, который никогда не строился с Maven, и я еще не полностью погрузился в источник проекта. Однако, поскольку количество зависимостей для проекта казалось мне подавляющим, я решил, что мне нужно выяснить решение для управления. Это привело меня к Maven, а затем косвенно к Apache Archiva.

Итак, я настроил репозиторий Archiva и загрузил все зависимости, необходимые для проекта. Все эти артефакты являются JAR-файлами. Затем я создал файл pom.xml в существующем каталоге проекта и изменил настройки сборки в соответствии с проектом. Теперь директория проекта выглядит следующим образом:

ProjectStructure and Import Error In Source Code

В приведенном выше скриншоте, вы можете увидеть ошибку на линии 12. Эта ошибка говорит «package.imgscalr не существует» это позже вторит MVN компилировать ,

Полный проект POM выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
    <!--LISCENSE HEADER--> 
    <project> 
     <groupId>com.glsarchives</groupId> 
     <artifactId>GLSLib</artifactId> 
     <version>1.0</version> 
     <modelVersion>4.0.0</modelVersion> 
     <packaging>jar</packaging> 
     <dependencies> 
      <dependency> 
       <groupId>commons-lang</groupId> 
       <artifactId>commons-lang</artifactId> 
       <version>2.1</version> 
      </dependency> 
      <dependency> 
       <groupId>at.unbounded</groupId> 
       <artifactId>serialization.jar</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>cecore</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>celib</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>ceplugins</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>cereports</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>cesession</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>ceutils</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>corbaidl</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>ebus405</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>MetafileRenderer</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>rasapp</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.businessobjects.sdk</groupId> 
       <artifactId>rascore</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.logging.log4j</groupId> 
       <artifactId>log4j</artifactId> 
       <version>1.2.17</version> 
      </dependency> 
      <dependency> 
       <groupId>org.dspace.xmlui.concurrent</groupId> 
       <artifactId>Concurrent</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.eclipse.persistence</groupId> 
       <artifactId>eclipselink</artifactId> 
       <version>2.5.2</version> 
      </dependency> 
      <dependency> 
       <groupId>org.imgscalr</groupId> 
       <artifactId>imgscalr-lib</artifactId> 
       <version>4.2</version> 
      </dependency> 
      <dependency> 
       <groupId>org.lucee</groupId> 
       <artifactId>commons-logging</artifactId> 
       <version>1.1.1</version> 
      </dependency> 
      <dependency> 
       <groupId>org.lucee</groupId> 
       <artifactId>xml-apis</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.eclipse.persistence</groupId> 
       <artifactId>javax.persistence</artifactId> 
       <version>0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>org.netbeans.lib</groupId> 
       <artifactId>awtextra</artifactId> 
       <version>0.0</version> 
       <scope>compile</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.netbeans.external</groupId> 
       <artifactId>AbsoluteLayout</artifactId> 
       <version>0.0</version> 
      </dependency> 
     </dependencies> 

     <build> 
      <sourceDirectory>./src</sourceDirectory> 
      <finalName>GLSLib</finalName> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 

     <repositories> 
      <repository> 
       <id>GLS-Java-Repo</id> 
       <name>Java Repository</name> 
       <url>http://archiva:8080/repository/GLS-Java-Repo/</url> 
       <releases> 
       <enabled>true</enabled> 
       </releases> 
       <snapshots> 
       <enabled>true</enabled> 
       </snapshots> 
      </repository> 
      </repositories> 
      <pluginRepositories> 
       <pluginRepository> 
        <id>GLS-Java-Repo</id> 
        <name>Java Repository</name> 
        <url>http://archiva:8080/repository/GLS-Java-Repo/</url> 
        <releases> 
         <enabled>true</enabled> 
        </releases> 
        <snapshots> 
         <enabled>true</enabled> 
        </snapshots> 
       </pluginRepository> 
      </pluginRepositories> 
    </project> 

Когда я бегу mvn compile -X, я получаю следующий результат:

[INFO] Error stacktraces are turned on. 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building GLSLib 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ GLSLib --- 

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, 
i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory C:\GLS_DEVELOPER\GLS_Projects\GLS_Lib 
\Repositories\GIT\GLS-Lib_PR_Repo\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ GLSLib --- 
[INFO] Changes detected - recompiling the module! 
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b 
uild is platform dependent! 
[INFO] Compiling 91 source files to C:\GLS_DEVELOPER\GLS_Projects\GLS_Lib\Reposi 
tories\GIT\GLS-Lib_PR_Repo\target\classes 
[INFO] ------------------------------------------------------------- 
[WARNING] COMPILATION WARNING : 
[INFO] ------------------------------------------------------------- 
[WARNING] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Rep 
o/src/gls/ui/emp/EmpComboBoxPanel.java: Some input files use unchecked or unsafe 
operations. 
[WARNING] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Rep 
o/src/gls/ui/emp/EmpComboBoxPanel.java: Recompile with -Xlint:unchecked for deta 
ils. 
[INFO] 2 warnings 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[12,20] package org.imgscalr does not exist 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[106,18] cannot find symbol 
    symbol: variable Scalr 
    location: class gls.image.ImagePanel 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[128,18] cannot find symbol 
    symbol: variable Scalr 
    location: class gls.image.ImagePanel 
[INFO] 3 errors 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.154 s 
[INFO] Finished at: 2016-09-14T12:31:34-04:00 
[INFO] Final Memory: 17M/321M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. 
1:compile (default-compile) on project GLSLib: Compilation failure: Compilation 
failure: 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[12,20] package org.imgscalr does not exist 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[106,18] cannot find symbol 
[ERROR] symbol: variable Scalr 
[ERROR] location: class gls.image.ImagePanel 
[ERROR] /C:/GLS_DEVELOPER/GLS_Projects/GLS_Lib/Repositories/GIT/GLS-Lib_PR_Repo/ 
src/gls/image/ImagePanel.java:[128,18] cannot find symbol 
[ERROR] symbol: variable Scalr 
[ERROR] location: class gls.image.ImagePanel 
[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o 
rg.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on p 
roject GLSLib: Compilation failure 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:212) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
ct(LifecycleModuleBuilder.java:80) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThre 
adedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl 
eStarter.java:128) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun 
cher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav 
a:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La 
uncher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java: 
356) 
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compila 
tion failure 
     at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(Abstrac 
tCompilerMojo.java:858) 
     at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.ja 
va:129) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default 
BuildPluginManager.java:134) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
.java:207) 
     ... 20 more 
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please rea 
d the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc 
eption 

Таким образом, очевидно, проблема заключается в том Maven не могу найдите пакет org.imgscalr. Но ни одна из моих зависимостей не была перезаписана или удалена - на основе дерева зависимостей, созданного mvn dependency:tree -Dverbose, включая зависимость imgscalr-lib (это JAR, который содержит пакет org.imgscalr и META-INF).

Подозревая коррупцию, я удалил папку imgscaler-lib в локальном репозитории, а затем весь репозиторий - ни один из них не работал. После компиляции Maven повторно загрузил все файлы из моего хранилища Archiva, но проблема не устранена.

Я проверил mvn help:effective-pom и, похоже, соответствует моему pom.xml.

Я также попытался запустить mvn dependency:copy-dependencies как предложено в связанном вопросе, и все мои библиотеки успешно скопированы в целевой каталог, в том числе библиотеки вопрос: org.imgscalr

Что я здесь отсутствует?

редактировать: Обновленный pom.xml добавить хранилище информации

редактирование: Причина у меня очень странные номера версии в моей pom.xml, потому что я загрузил артефакты Archiva из папки предоставленной мне мой предшественник. Множество свободных артефактов не было номеров версий, поэтому я обозначил эти неизвестные номера версий «0.0»

Редактировать: Удаленный репозиторий снова после добавления информации репо в pom.xml. Рана еще одна чистая цель и еще одна цель компиляции. Maven восстановил зависимости. Я подтвердил, что maven получает артефакт из моего репозитория Archiva. Проблема сохраняется.

+0

Какие репозитории для вашего maven настроены на загрузку зависимостей? В вашем pom.xml нет ни одного. – nasukkin

+0

@nasukkin Ваш комментарий заставило меня понять, что я фактически не добавил свой репозиторий в POM. Тем не менее, я пошел и добавил эту информацию в POM и все еще имею ту же проблему. (Я редактирую POM в исходном вопросе) –

+0

Вы можете открыть imgscalr-jar в своем локальном репозитории Maven с помощью инструмента, такого как 7zip, и посмотреть, содержит ли он пакет. – mm759

ответ

2

Из комментария:

Пакет ТОЧНО в .jar. Не файл .class, а 3 исходных файла .java. В том числе один называется Scalr.java, который, похоже, тот, о ком компилятор жалуется.

Это ваша проблема. Jars должен содержать скомпилированные файлы .class, а не исходные файлы, такие как * .java-файлы. Вы поставили исходные банки в Archiva, но они должны быть банками, которые содержат скомпилированные файлы.

Я предполагаю, что вы получили эти .jars через неортодоксальный способ, а не используя обычные инструменты.

+1

Вам нужно будет превратить эти банки в соответствующие проекты и скомпилировать их в банки сначала, прежде чем вы сможете использовать их так, как вы их используете. Либо это, либо просто сбрасывают их все как .java-файлы в один и тот же проект. – eis

+1

Спасибо за базовую информацию Java, я не совсем понял, что такое JARS и как они функционировали. Теперь я прочитал и понял. Кроме того, я отправился в отдельный репозиторий maven и загрузил хорошую версию артефакта (один с скомпилированными файлами .class) и впоследствии повторно загрузил их в мой репортаж Archiva. Теперь все работает как шарм. –

+0

отлично! и спасибо за продолжение :) – eis

Смежные вопросы