2016-10-07 5 views
-2

Я пытаюсь скомпилировать мой проект maven, и я зависим от другого проекта (который представляет собой файл jar). По какой-то причине, когда я пытаюсь скомпилировать, я получаю следующую ошибку, которая, как представляется, заключается в том, что мой проект не может получить доступ к требуемым зависимостям проекта, в котором я зависим, хотя я не использую ни одну из этих зависимостей.Ошибка компиляции при ненужной зависимости зависимости

Здесь ошибка http://hastebin.com/pebolozuxi.sql

[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/Users/cneth/Desktop/Developing/PrimeMC/PrimeMobWhacker/src/main/java/org/primemc/MobWhackerManager.java:[315,34] cannot access tech.rayline.core.plugin.RedemptivePlugin 
    class file for tech.rayline.core.plugin.RedemptivePlugin not found 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5.892 s 
[INFO] Finished at: 2016-10-07T14:56:20+03:00 
[INFO] Final Memory: 25M/298M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project MobWhacker: Compilation failure 
[ERROR] /C:/Users/cneth/Desktop/Developing/PrimeMC/PrimeMobWhacker/src/main/java/org/primemc/MobWhackerManager.java:[315,34] cannot access tech.rayline.core.plugin.RedemptivePlugin 
[ERROR] class file for tech.rayline.core.plugin.RedemptivePlugin not found 

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

Спасибо!

+3

Вместо того, чтобы заставлять людей следовать по ссылке, вы могли бы разместить этот короткий фрагмент кода непосредственно. Вы также можете опубликовать некоторый код, так как трудно сказать только с этим сообщением и вашим очень кратким описанием. – Thomas

+0

Есть ли у вас доступ к источнику? Найдите этот класс tech.rayline.core.plugin.RedemptivePlugin, набрав ctrl + shift + t и напечатав RedemptivePlugin в затухании breadcrump, вы увидите соответствующую банку и версию – HRgiger

+0

@Thomas Alright, извините. Я в следующий раз. Обычно я это делаю, но эта ошибка выглядела немного раздражающе, чтобы читать, когда я попытался опубликовать ее здесь. –

ответ

2

Это не имеет никакого отношения к Maven. Компилятор java хочет этот класс. MobWhackerManager.java:[315,34], на самом деле, хочет этот класс. Номер строки находится прямо там. Ваш код, в строке 315, каким-то образом ссылается на этот класс.

+0

Итак, ссылаясь на класс, который ссылается на 'RedemptivePlugin.java', проект' RedemptivePlugin.java' требует зависимости от моего проекта? –

+0

Не видя кода, как 315 этого класса, я не могу сортировать вас дальше. Но, вообще говоря, если вы объявляете поле, вызывается метод, независимо от того, да, компилятор должен видеть файл .class, чтобы сообщить, как его скомпилировать. возможно, вы вызываете то, что возвращает объект этого типа. .. – bmargulies

+0

'PrimeSpawnerTiers.getInstance() getSpawnerTracker() getSpawnerMobs() dropLoot (event.getKilledEntity(), (суммированного - newStacked) \t \t \t \t * getLootMultiplier (данные)).' –

0

Ваша ошибка говорит о том, что компилятор не попадет в классе tech.rayline.core.plugin.RedemptivePlugin.

Поэтому вам, вероятно, нужно добавить банку с этим классом в зависимости от ваших зависимостей Maven.

+0

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

+0

Это точно так: вам нужно иметь все классы, которые транзитно используются вашим проектом, то есть также классы, которые используются классом, который используется классом, который используется вами. В противном случае вы не можете скомпилировать. Но это именно то, для чего Maven или Gradle: Сбор всех транзитивных зависимостей автоматически. –

+0

Ах, хорошо. Спасибо –

0

Из вашего последнего комментария Я понимаю, что вам нужна банка, содержащая RedemptivePlugin, чтобы вы ее сохранили. В худшем случае, загрузите его вручную с правой версией и положить его в .m2 с правильным путем

предыдущей answear
Juste, чтобы быть в состоянии помочь:
Вы проверили наличие необходимого jar в вашем .m2?
Вы проверили полные зависимости вашего проекта, чтобы точно указать, что вам не нужна фляга, содержащая класс tech.rayline.core.plugin.RedemptivePlugin.

Если вы уверены в том, что, попробуйте:

<dependencies> 
    <dependency> 
     <groupId>The Project Jar That Links You To RedemptivePlugin Jar</groupId> 
     <artifactId>Project</artifactId> 
     <version>TheVersion</version> 
     <exclusions> 
     <exclusion> 
      <groupId>The Jar containing RedemptivePlugin</groupId> 
      <artifactId>theJar</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    </dependencies> 
+0

Из вашего последнего комментария я понимаю, что вам нужна банка, содержащая RedemptivePlugin, чтобы вы ее сохранили. В худшем случае загрузите его вручную с правильной версией и поместите его в свой .m2 с правильным путем. – lyy

+1

. Я определенно зависит от другой банки, которая оттеняет в банке RedemptivePlugin (бит длинной зависимой цепочки, но должен быть понятным). Я просто надеялся, что мне не удастся напрямую зависеть от банды RedemptivePlugin, поскольку я не использую ее напрямую в своем проекте. Однако я предполагаю, что это необходимо для моего пути построения, даже если я не использую его напрямую. –

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