Eclipse жобасында түрлі модульдер арасында циклдік тәуелділікті қалай шешуге болады?

Eclipse проблемасының журналы «Цикл жобаның құрылыс жолында табылды ....» Бұл циклдік тәуелділіктен құтылу үшін не істеу керектігі туралы кез-келген ой. Қай жобалардың бір-біріне тәуелді екенін білмеймін.

7
Барлық қате туралы хабарды сұрағыңызға көшіруге/қоюға болады ма? Ескерту: Тінтуірдің оң жақ түймешігімен басу, жобаны таңдау үшін қандай қасиеттер бар екендігін анықтауға болады.
қосылды автор Duncan Jones, көзі
Сондай-ақ жоба сілтемелері әдетте кездейсоқ орнатылмайды. Сіз Maven сияқты құрастыру жүйесін пайдаланасыз ба?
қосылды автор Duncan Jones, көзі
Мен Ant құрылымын қолданамын.
қосылды автор Gaurav Pant, көзі

7 жауаптар

Айналмалы тәуелділіктерді тұтылуда реттеуге болады:

Preferences > Java > Compiler > Building > Build path problems > Circular dependencies
12
қосылды
Спасибо! Менің міндетім mavenмен емес (консольден жұмыс істейді), бірақ ақылсыз Eclipse.
қосылды автор MeIr, көзі
Бұл мәселені шешпейді. Ол жай жерге көміп жатыр.
қосылды автор Duncan Jones, көзі
@ Джорис: Сіз ұсынған нәрсе - бұл мәселеге уақытша түзету. Haan қолданбасы бұл параметрмен жақсы жұмыс істейді, бірақ кейінірек ол үлкен мәселе болып көрінуі мүмкін, себебі ол қолданбаның қалаусыз қателерін тудыруы мүмкін.
қосылды автор Gaurav Pant, көзі

Eclipse-те циклдік тәуелділік Eclipse-дағы жобалар арасындағы құрылыс жолдарында цикл бар екенін көрсетеді.

Егер сізде 5 жоба бар болса, A, B, C, D және E деп айтсаңыз, онда циклдік тәуелділік:

  1. B құрастыру жолы қажет
  2. B D құрастыру жолындағы
  3. талап етеді
  4. D өз салу жолында А талап етеді

Hence A->B->D->A is a cycle.

Осы циклдың арқасында, Eclipse алдымен қандай жобаны жасауды білмейді.

Бұл циклдік тәуелділікті жою үшін кодты қайта жасауыңыз қажет. Немесе нақты кодтың осындай тәуелділіктері болмаса, қажетсіз жол-жол жазбаларын жойыңыз.

3
қосылды

Жобаның параметрінде сіз тәуелділікті көре аласыз, не істей аласың, барлық тәуелділіктерді жояды және бірінен кейін бірін қосады. Цикл сіз оны осылай жасамауыңыз керек дегенді білдіреді. Сыныптарды анықтағаннан кейін шешімдеріңіз, сіздің Үлкен жоба A CB1 сыныпты екінші B жобасынан және CB1-ден A-ден сыныпты CA1 талап ететінін айтады:

  • Move a class CB1 in the project A to remove the dependency --> works if it doesn't create more dependencies.
  • extract interfaces and use non dependant interfaces (you might need to create super class or more interfaces depending of your structure).
  • implement differently, why do you specifically need class from other project? try using common parent classes if any
2
қосылды
2-ден астам плагиндерді (700-ден астам пайдаланамыз) біреуді пайдаланып, мысалы, мысалы, біріктіру кезінде осы қатені алу үшін: (MANIFEST.MF) -> Тәуелділіктер (қойынды) -> Тәуелділікті талдау сонда сізде «Тәуелділік диаграммасында циклдарды іздеңіз», ол сізді сол шілтердің қай жерде екендігін көрсетеді. Сондықтан қайдан бастау керек екенін анықтау оңайырақ болады. Көңілділер.
қосылды автор mtfk, көзі

Eclipse жобалары арасында циклдік тәуелділікті жоюдың үш тәсілі бар,

1.Go to project-> java compiler-> building -> Enable project specific settings.
Select build path problems and give warning as option for circular dependency.

2.Go to project->java build path. In projects tab, select the project and remove.

META-INF қалтасына кіріңіз, MANIFEST.MF ашыңыз. MANIFEST.MF көрініс қойындысында циклдік тәуелді жобасы «Import package:» бағанында көруге болады.
Жобаны бағаннан алып тастаңыз.

Бірінші нұсқа қатені шешпейді. Екінші және үшінші нұсқа - бұл тәуелділікті жоюдың дұрыс жолы.

2
қосылды

Қарапайым Java жобаларының арасындағы байланысты анықтау үшін, Жобаның сипаттары бөлімін қараңыз Java құрастыру жолы Жобалар. Егер сізде J2EE жобалары болса, онда Project Properties параметрінде қосымша параметр бар Жоба сілтемелері. Барлық жобаларыңыздың барлығын тексеріңіз, графикке (немесе экранға) сызба жасаңыз және циклды бұзу үшін не істей алатыныңызды көріңіз.

Әдетте, дұрыс тәуелділік графигінде жұлдыздың нысаны бар, ол жалпы ресурстарды қамтитын негізгі жобамен және әрбір нақты пайдаланушылық функционалдығын іске асыратын әрбір жапырақты жобадан тұрады. Дәлірек айтқанда, ядро ​​бірнеше өзара байланысты жобалардан тұруы мүмкін; үлкен жапырақтарға арналған.

Тәуелділік циклінің әдеттегі жолы бірнеше тығыз байланысты жобаларды біріктіру болып табылады.

0
қосылды

Сіз өзіңіздің жобаларыңыздың немесе кодтың өзін қайта қарауыңыз қажет болуы мүмкін. Бұл сізбен бірге орауышпен мәселе болуы мүмкін.

0
қосылды

Мен осы мәселеге ұзақ уақыт бұрын жүгірдім және қажет болған жағдайда жобаны талап етілген жобадан сыныпқа жібергенде, мен оны қалай шешкенімді ұмытып кеттім, менде jee .lang.reflect.Method нысаны жіберушінің кодынан sendee сыныбын жария етпестен шақыруға болатын нысанды.

Мен мұны істеудің артықшылықтары бар екеніне сенімдімін, мысалы, жіберушінің және синдердің интерфейсі бар, бірақ кодтау экономикасы бойынша бұл қарапайым болып көрінеді.

Басқа жауаптар ұсынылғандай, бұл шын мәнінде айналымдық емес, ал Eclipse дизайнының артефакті болып табылмайды.

0
қосылды