Problem z classpath i NetBeans

0

Witam.
Programuję w javie od kilku miesięcy i żyłem sobie dotąd spokojnie wykorzystując NetBeans i "standardowe" biblioteki javy. Problem pojawił się gdy okazało się, że moja aplikacja generuje ogromne ilości danych, które chciałbym jeszcze później wykorzystać. Zdecydowałem się na zapisywanie danych cząstkowych w formacie xml, jako że jest dość uniwersalny. Wybrałem biblioteki projektu XOM: http://www.xom.nu/. Ściągnąłem plik xom-1.2.1.zip i próbowałem "zainstalować", tj. dodać do zmiennej classpath C:\xom-1.2.1.zip. Napisałem sobie kilka linii kodu które miałyby mi sprawdzać co się dzieje:

import nu.xom.*;
import java.awt.*;
public class n {
public static void main(String[] args) {
System.out.println("coś");
Toolkit tk = Toolkit.getDefaultToolkit();
tk.beep();
}}

podczas kompilacji oczywiście wyskakiwał błąd, że nu.xom does not exist. Postanowiłem obejść problem, tzn rozpakowałem zipa i kompilowałem poleceniem javac -classpath C:XOM\src;. nazwaProgramu.java, podobnie uruchamiałem i wszystko działało.
Jednak nadal chciałem pisać w netbeans a nie notatniku ;). Jako że NetBeans nie korzysta ze zmiennej systemowej skorzystałem z tutoriala na stronie:
http://java.sun.com/developer/onlineTraining/tools/netbeans_part1/
niestety gdy umieszczam w kodzie w netbeans polecenie

import nu.xom.*;

wyrzuca mi, że package does not exist. Czy ma ktoś pomysł na rozwiązanie tego problemu?

0

NetBeans ma w menu Tools opcję Libraries gdzie możesz sobie dodawać nowe biblioteki.
Dodawałem różne i u mnie wszystko działa bez zarzutu.

0

niestety również nie działa. Dokładnie dodałem nową bibliotekę o nazwie XOM (tym razem użyłem archiwum .jar : http://www.cafeconleche.org/XOM/xom-1.2.1.jar ) i dodałem w odpowiednim okienku do classpath i sources C:\xom-1.2.1.jar. Archiwum to zawiera w swoim głównym katalogu folder nu\xom. W programie próbowałem poleceń

import nu.xom.*;

oraz

import XOM.nu.xom.*

ale dalej pokazuje mi że package does not exist.
Po restarcie NetBeans dostałem że xom library could not be found i w opisie coś takiego:

Problem: The project uses a class library called "xom", but this class library was not found.
Solution: Click Resolve to open the Library Manager and create a new class library called "xom".

oczywiście gdy to zrobiłem, dalej nic nie działało ;). Poza tym dostałem komunikat, że plik bodajże xom.xml już gdzieś istnieje. Nie wiem co z tym zrobić.

0

Jeżeli potrzebne ci jest tylko do jednego projektu to robisz tak:
Rozpakowujesz tego zipa co masz, w nim jest plik xom-1.2.1.jar
Prawy na projekcie -> Properties ->Libraries -> na zakładce compile dajesz add JAR/folder i wybierasz tego jara.
Napisz czy działa

Na szybko twojego posta czytałem i dokładnie nie doczytałem...
Nie znam sie za dobrze na tym ale do sources powinien byc dodany katalog src a nie plik jar
A poza tym jak juz stworzysz ta biblioteke to to ona sama automatycznie nie dodaje sie do projektu. Nie napisales czy ja dodałes sam.
Jak ja stworzyles to powinna byc na liscie w properties -> libaries -> add library i ja wtedy dodajesz...

0
paradox napisał(a)

Jeżeli potrzebne ci jest tylko do jednego projektu to robisz tak:
Rozpakowujesz tego zipa co masz, w nim jest plik xom-1.2.1.jar
Prawy na projekcie -> Properties ->Libraries -> na zakładce compile dajesz add JAR/folder i wybierasz tego jara.
Napisz czy działa

OK, działa, dzięki. Na początku to robiłe, tylko że chciałem dodac zipa, mój błąd.

0

Temat bardzo pomocny, ale mam jeszcze jedno pytanie.
Mam aplikacje spakowaną do JAR. Co zrobić żeby wszystkie potrzebne biblioteki były dołączone do tego pliku?
Chodzi o to żeby było w jednym pliku i żeby było przenośne

0

jar cf archiwum.jar klasa1.class klasa2.class ...
c – tworzenie pliku (create),
f – zawartość archiwum zostanie zapisana do pliku archiwum.jar zamiast do
standardowego wyjscia (stdout);
Inne opcje, które mogłyby zostac dodane do cf:
v – informacje o postępie prac (verbose),
0 (zero) – brak kompresji,
M – domyślny plik manifest nie zostanie dołączony do archiwum
m – do archiwum zostanie dołączony plik manifest z określonej lokalizacji,
np: jar cmf plik_manifest archiwum.jar *,
-C – zmiana katologu w trakcie działania archiwizatora, np: jar cf
ImageAudio.jar -C images * -C audio *.
http://szablony.freeware.info.pl/meta-tag.html
W archiwum jar zwykle znajduje się katalog META-INF a w nim plik
MANIFEST.MF zawierający dodatkowe informacje o archiwum.
Typowa zawartość:
Manifest-Version: 1.0
Created-By: 1.5.0-b64 (Sun Microsystems Inc.)
Ant-Version: Apache Ant 1.6.5
Main-Class: pl.com.costam.Nazwa_głownej_klasy
mówi, że po uruchomieniu archiwum wykonana zostanie metoda
main(String[] args) zawarta w klasie Nazwa_głownej_klasy znajdującej się w
pakiecie pl.com.costam.
Uruchomienie pliku jar:
java -jar archiwum.jar

0

djdanto napisał

jar -cf nazwa_twojego_programu.jar *.class

Tak nie jest dobrze, w pliku jar brakuje informacji o klasie startowej, trzeba tak

jar -cfm nazwa_twojego_programu.jar nazwa_pliku_z_manifestem *.class
lub tak
jar -cfe nazwa_twojego_programu.jar nazwa_klasy_startowej *.class

0

Witam. Podepnę się pod temat. Importowanie jara do jednego projektu działa bez problemu. Natomiast chciałbym zaimportować to na stałe.

pet napisał(a)

NetBeans ma w menu Tools opcję Libraries gdzie możesz sobie dodawać nowe biblioteki.
Dodawałem różne i u mnie wszystko działa bez zarzutu.

Zrobiłem tak jak pet napisał "tools" -> "libraries" dodałem "New Library" z nazwa MINA i dodałem do "sources" plik jar, ale mimo to dalej nie mogę zaimportować wymaganej biblioteki, w moim przypadku org.apache.mina.xxx.*;

1 użytkowników online, w tym zalogowanych: 0, gości: 1