LINUX.ORG.RU

[java] Автоматическое подтягивание jar'иков

 


0

1

Стало интересно, существуют ли средства для автоматического подтягивания jar'иков. Т.е. когда какой то класс не найден, программа не трубит об этом во всю консоль, а пытается подтянуть нехватающие либы (скажем из репозиториев maven'a)


ты ломаешь представления о деплойменте)

annulen ★★★★★
()

программа не трубит об этом во всю консоль, а пытается подтянуть нехватающие либы (скажем из репозиториев maven'a)


клиника какая-то, вот что linux с людями делает. А Classpath виртуальной машине зачем? Если в класспасе жарников нет, откуда тогда она их притягивать будет? Из libastral.so? А чтобы они там были об этом должен позаботиться админ системы

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

Если в класспасе жарников нет, откуда тогда она их притягивать будет?

Из репозитория maven.
Просто бывают случаи когда java проги выдают classnotfound на что нибудь типа org/lalal/lalal/lalal и вот приходится по всему инету искать в каком jar это lalal находится.
Под lalal я имею ввиду что нибудь типа либ спринга или log4j

n4ela
() автор топика
Ответ на: комментарий от n4ela

Просто бывают случаи когда java проги выдают classnotfound


Хм, сколько ни скачивал бесплатных прог на жабе всегда на сорсфорже 2 варианта, clean и with-dependencis. нужно 1 раз скачать with-dependencis а потом уже можно самому следить какие либы стоить скачать/обновить. Както так
А идея с maven неплоха, но например как доверять мавену качать что ни попадя в банке или там где вообще инета на компах нет?

Karapuz ★★★★★
()

Изучать технологию Java WebStart.

iZEN ★★★★★
()

смотрел мельком на проект jfire. там клиентское приложение на eclipse rcp подтягивает jar-файлы с сервера.

верно выше заметили - в jfire тоже накостылен свой класслоадер. уж не знаю, насколько это всё идеологически верно.. %)

aol ★★★★★
()

и как вы определите нужную версию библиотеки в репозитории мавена?

JFreeM ★★★☆
()

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

jreznot
()

И как по имени класса определить jar-ник, в котором он находится? Про версии я уже не говорю.

Zenom ★★★
()
Ответ на: комментарий от Zenom

И как по имени класса определить jar-ник, в котором он находится?

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

n4ela
() автор топика
Ответ на: комментарий от Zenom

Вот так

Немного дополнено:

import java.net.URL;

public class ShowClassPath {

	public static void main(String[] args) {
		String relativePathToClass = ShowClassPath.class.getName().replace('.', '/') + ".class";
		URL url = ShowClassPath.class.getClassLoader().getResource(relativePathToClass);
		String pathToClass = url.getFile();
		System.out.println("Path to class:" + pathToClass);
		String pathToRoot = pathToClass.substring(0, pathToClass.length() - (relativePathToClass).length() - 1);
		System.out.println("Class found in:" + pathToRoot);
	}
}
Отсюда: http://www.sql.ru/forum/actualthread.aspx?tid=84654

iZEN ★★★★★
()
Ответ на: комментарий от n4ela

Просто бывают случаи когда java проги выдают classnotfound на что нибудь типа org/lalal/lalal/lala

Вот который раз убеждаюсь, что если человек хочет странного, то нужно ковырять исходную задачу. То, что у тебя выскакивает класс нот фаунд - это очень странно, у меня такого не бывает. Что бы тебе побороть такую проблему думаю стоит покопать мавен доки. Например посмотри на shade-plugin. Сколько его использую - проблем не было.

dizza ★★★★★
()
Ответ на: комментарий от Karapuz

>Если в класспасе жарников нет, откуда тогда она их притягивать будет? Из libastral.so?

Ты как апплета никогда не видел.

r ★★★★★
()
Ответ на: комментарий от Karapuz

>н стягивает с относительного пути afaik а не с каких-то неизвестных ему сайтов

Он стягивает с тега codebase в каком-то там хтмле значение которого передано класслоадеру:) Что собственно и хочет TC.

r ★★★★★
()

Ммм., а OSGI не то, что тебе надо ? По крайней мере я с трудом себе представляю задачу в которой нужно было бы автоматически разруливать зависимости, кроме случая с плагинами, в том числе от третьих лиц.. Если так то OSGI в частности одна из его реализаций Equinox (заюзано в Eclipse), то, что тебе надо..

Valor
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.