Kompilacja "ręczna" i w Eclipse

0

Czy można zobaczyć polecenie używane przez Eclipse do kompilacji pliku ?
Np. plik

package bs.math.wykresy;

public class Sinus implements Function
{
    public double compute(double x)
    {
        return Math.sin(x);
    }
}

inaczej się kompiluje z wnętrza Eclipse, inaczej z ręki (javac -d . Sinus.java). Skompilowany z ręki jest jakoś niepoprawny - wywołanie Class.forName("bs.math.wykresy.Sinus") wyrzuca wyjątek ClassNotFoundException
Mam kompilator Suna 1.6.02. W opcjach projektu mam ustawioną Javę 1.6.
Bogdan

0

Witam

Wydaje mi się że przy kompilacji ręcznej po prostu nie ustalasz odpowiedniej wartości classpath, pod którą dostępna byłaby ładowana klasa. Zobacz w Eclipse co masz w Build Path dodane.

pzdr

0

eclipse ma wbudowany kompilator (napisany w Javie)

0

@bogdans, tak jak pisał PawelW masz źle ustawiony classpath w konsoli. Ponad to nie kompiluje się ręcznie projektów większych niż trzy klasy. Do takich zabaw służą ant czy maven.

0

poza tym eclipse nie ma wbudowanego kompilatora (bo to IDE jest) tylko korzysta z SDK od Sun'a

pozdawiam

0

Są przesłanki wskazujące, że Eclipse ma własny kompilator: Plik *.class skompilowany Eclipsem jest inny niż plik skompilowany przez SDK (po dekompilacji jad-em są identyczne).
pozdrawiam

0

jedno pytanie w jaki sposób porównywałeś oba pliki?

0

http://www.eclipse.org/jdt/core/index.php

wymaga tylko JRE zeby dzialac, kompiluje samodzielnie, za pomoca wlasnego kompilera
oczwiscie domyslnie, mo mozna zmienic buildera, np wykorzystac ant buildera ktory z kolei wykorzystuje JDK suna

0

Mają inny rozmiar. Poza tym to są malutkie klasy - pliki *.class mają około 200 bajtów.
Wystarczy do nich zajrzeć.
pozdrawiam
P.s. Mogę ci wysłać do porównania

0

Wracając do problemu. Rozcziłem, Eclipse niezależnie od użytego kompilatora dynamicznie generuje classpath na podstawie wpisów w properties projektu. Oznacza to że nigdy nie "zgubi" klasy w trakcie uruchamiania i kompilacji. Problem może, ale nie musi, pojawić się jeżeli używasz zabawek typu maven2 plugin, który wskazuje na zewnętrzne repozytorium jarów (należy wtedy ustawić zmienne środowiska Eclilpse M2_REPO i JAVA_HOME). W przypadku kompilatora konsolowego niestety trzeba samemu ręcznie wklepać classpath zarówno na poziomie kompilacji jak i uruchomienia aplikacji. Podobny problem miałem z HSQLDB i manie natchnęło by to sprawdzić :)

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