Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Technical Issue] Eclipse - Импорт на Java проект на друга машина

Здравейте,

Наложи се да сменя машината, на която работя и съответно проектът, разработван до момента под Уиндоус, трябва да бъде импортнат на машина, която върви под Линукс. И изведнъж се оказа невъзможно за работа.

1. Оказа се, че класът не може да си намери пътя към външната библиотека, понеже беше изтеглен някъде на другия компютър. Когато се импортне външна библиотека, тя не влиза ли някъде в самия проект?

2. Отидох на проекта, десен бутон, Build Path - Configure Build Path - Java Build Path - таб Libraries и от там смених пътя. Намери си библиотеката. Само че идва въпросът как го накараме да работи на всяка машина? Дори библиотеката да я запишем в папката на самия проект, пътят към нея ще е различен на всеки компютър.

3. В задача 9 не намира фонта. В което няма никаква логика. Задал съм да го търси по следния начин:

BaseFont font = BaseFont.createFont("TTFs/Arial.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);

Самата папка и ttf файл са в папката на проекта. Тук обаче проблемът се оказа, че в Уиндоус името на файла е с главна буква, докато в Линукс е с малка. Как да го задам по такъв начин, че да работи и под двете системи?

 

4. Тук вече системата тотално ме хвърли в тъча:

Ето кодовете ми на задачи 5 и 6:

http://pastebin.com/yaip6Hfv

http://pastebin.com/haNXLXuy

И на двете места ми подчертава printf и ми изписва, че методът printf(String, Oblect) не е приложим за аргумент от типа (String, LocalDateTime.Now()) съответно (String, Int). В това вече няма никаква логика. Под уиндоус програмите вървяха перфектно, сега не знам какво не им харесва, че подчертава pringf.

Тагове:
0
Java Advanced 09/09/2014 21:47:19
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей,

 

Първо ще ти изпратя линк към една полезна статия по въпроса, отговаря частично на всичките ти въпроси

http://en.wikipedia.org/wiki/Classpath_(Java)

Другото, което е по спомен, е че файлът мисля се казваше classpath но не съм убеден. Редактирай го и направи пътищата релативни. В момента най-вероятно Еклипс ти сетва пътищата към класа от рода на D:\my folder\my project\lib\mylib.jar Също така не използвай хардкоднати наклонени черти, ако искаш да работи на multiple OS. Използвай File.separator

Тъй като нямам пред себе си Java проект, намерих на произволен принцип такъв в Github. Ето един примерен .classpath file:

https://github.com/hmkcode/Java/blob/master/websocket-java-api/websocket-app-client/.classpath

Както забелязваш, всеки jar е инклуднат релативно пр.

M2_REPO/javax/activation/activation/1.1/activation-1.1.jar

 

P.S.: Ако издърпаш фонта и го сложиш в проекта, може би можеш да го направиш да е с малка буква на всяка OS. Не се сещам как би възникнал проблем с това. Просто не ползвай дефолтния за операционната система. Въпреки, че виждам, че си задал някакъв път до файла и ми е странно как така на една операционна система е с главна, а на друга - с малка?

3
09/09/2014 09:21:36
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Благодаря ти за отговора. За съжаление разбрах много малко от него. Какъв е този classpath файл, къде се намира и как се редактира? Какво значи релативни пътища? Какво значи хардкоднати наклонени черти и файл сепаратор?

 

 

-1
RoYaL avatar RoYaL Trainer 6849 Точки

.classpath е някъде в руута на проекта ти мисля, сърчни го файл сърч.

Редактира се като текстов файл.

Релативни пътища са, когато си във /home/vhosts/myVirtualHost/ и искаш да отидеш до /home/vhosts/myVirtualHost/lib/myLib.jar да напишеш само /lib/myLib.jar. Докато /home/vhosts/myVirtualHost/lib/myLib.jar е абсолютен път, /lib/myLib.jar е релативен, т.е. такъв, който е в релация с пътя в който си в момента. Ако искаш примерно да го вземеш от предната директория, т.е. от /home/vhosts/myOtherVhosts/libs/lib.jar ще напишеш ../myOtherVhosts/libs/lib.jar (.. е директория назад).

Хардкоднати наклонени черти са просто наклонени черти, написани по начина по-горе. По принцип нормалната наклонена черта "/" важи за почти всички платформи и не би трябвало да имаш проблем с нея. Но бекслаша "\" е само за Windows. File.separator е методът separator от статичния клас File. Той проверява на каква операционна система си и съответно съобразява какъв да бъде слаша.

2
a.angelov avatar a.angelov 1316 Точки

По т.4 - виж коя версия на компилатора си настроил в екслипса. Направи я да бъде 1.8.:

http://stackoverflow.com/questions/7774428/why-am-i-getting-a-compilation-errors-with-a-simple-printf

Ако си със старата версия на Еклипс - Kepler трябва да добавиш съпорта за 1.8:

Use the Eclipse Marketplace to add Java™ 8 support to your Eclipse Kepler SR-2 package:

  1. Select "Help > Eclipse Marketplace..."
  2. Enter "Java 8 Kepler" in the search box
  3. Install Java 8 support for Eclipse Kepler SR2

...или направо мини на Eclipse Luna, която поддържа Java 8 по подразбиране.

0
09/09/2014 10:04:47
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Не знам защо, но софтуер центърът на Убунту ми е сложил Еклипс 3.8. Махнах го и изтеглих 4.4, но сега стои сериозният проблем как да го инсталирам под Линукс.

-1
a.angelov avatar a.angelov 1316 Точки

Не се инсталира :) Разархивираш и стартираш от иконката в папката :)

ПС. Софтуерния център на Убунту доста често има стари версии на програмите, затова е добре да се проверява коя е актуалната.

ПС2. Можеш с десен бутон върху иконката и Make link да си го изнесеш на десктопа и да го добавиш в ланчъра вляво.

0
09/09/2014 10:22:35
Filkolev avatar Filkolev 4482 Точки

Или след първото стартиране на Еклипс, когато се появи в лаунчъра, да му да дадеш десен бутон и да го пиннеш, както става и в Уиндоус пинването на програми в quick launch.

0
RoYaL avatar RoYaL Trainer 6849 Точки

Ще ъпдейтна малко темата, тъй като снощи разрешихме проблема на колегата с клас пътя.

Файлът .classpath по подразбиране е скрит. Ако не е настроена графичната среда да показва скрити файлове, няма да го видите в руута на проекта. И при обикновен ls в терминала - също. При ls -a се вижда. Вариантите са да си покажете скритите файлове и да го редактирате през графичната среда, или да отворите едитор и да изберете път до файла. Или пък през терминала да влезете до руута на проекта, да изберете любимия си едитор nano, vim и т.н. и да отворите файла. e.g.: vim .classpath

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.