System.out.println działa z jednego pliku, a z drugiego nie

0

Czy to jest możliwe, żeby System.out.println z jednego pliku działało, a z drugiego nie...? :|
Mam klasę Datapath, która w konstruktorze tworzy nowy obiekt klasy Fairness:

public Datapath(Kernel sim, int ident, MacControl m) {
	fair = new Fairness(simulator, this);
        System.out.println("DATAPATH");

A w konstruktorze Fairness też mam System.out.println tylko z innym tekstem. Tekst z Datapath się wyświetla, a ten z Fairness nie....

No i dlaczego tak? Jak to w ogóle możliwe? O co chodzi w tej całej Javie? :/
Bo generalnie to ja to rozumiem tak, że najwidoczniej modyfikuję nie ten plik co trzeba. Raczej nieprawdopodobne jest, by System.out.println działał wybiórczo, prawda? No to skąd i dlaczego, jak brany jest ten inny plik?

Struktura projektu jest taka, że wszystkie pliki są w jednym folderze i tyle. W folderach obok są kopie tego projektu delikatnie różniące się, ale zawierające te same klasy.

-\src
---\scenario0
------Datapath.java
------Fairness.java
------Start.java
---\scenario1
------Datapath.java
------Fairness.java
------Start.java
---\scenario2
------Datapath.java
------Fairness.java
------Start.java

W CLASSPATH mam wpisane ".".

Dodam może jeszcze, że gdy otwieram ten projekt w NetBeans (mówiąc "ten", mam na myśli np. scenario0), to mimo BUILD SUCCESSFUL nie mogę zrobić Run, bo NetBeans nie znajduje main class. W klasie Start jest funkcja main...

Dlatego kompiluję z konsoli przez javac Start.java i odpalam przez java Start. Może to ma znaczenie...

0

Ile ty masz żeby używać jakichś printów? Srsly? Debuger w dłoń i za 10 sekund znajdziesz odpowiedź... A w IDE zapewne musisz pokazać gdzie jest main bo zgaduje ze masz ich tu kilka...

0

@Shalom, niechby IDE działało, to ja chętnie... Niestety, twa rada nie działa. W properties -> Run -> Main Class jest wpisane Start. Nie pomaga. Gdy wybiorę tu Browse, nie znajduje w projekcie żadnych main class.

Klasa Start:

public class Start {
    
    /**
     * Starting the simulation.
     */
    static public void main(String args[]) throws IOException {
	new Start();
    } // end main
1

Używanie z konsoli to droga przez mąkę, lepiej uruchom to w IDE. Rzecz w tym, że projekt ma katalog src a w nim podkatalogi to już pakiety, więc scenario0 to nie projekt.
Inna sprawa to taka, że jak piszesz javac Start.java to nie kompilujesz Datapath i Fairness. To co jest w ich kodzie może nie być w wynikowym pliku class, bop może został skompilowany przed dopisaniem. Zobacz daty plików .class.

0

Używanie z konsoli to droga przez mąkę, lepiej uruchom to w IDE. Rzecz w tym, że projekt ma katalog src a w nim podkatalogi to już pakiety, więc scenario0 to nie projekt.

No dobra, trochę was okłamałam, bo nie wiedziałam, że ma to znaczenie. Tak naprawdę główny projekt nazywa się rpr, a nie src. Folder netbeansa i jego build.xml znajduje się w podfolderze scenario0. scenario1 ma własny folder projektu.

Heh, i okazało się, że gdy zmieniłam strukturę na:

-\rpr
---\scenario0
-----\src
---------Datapath.java
---------Fairness.java
---------Start.java
-----\nbproject
-----build.xml

To śmiga :D Spoko, idę ogarniać dalsze absolutne podstawy... ;)

0

@aurel tak ogólnie to lepiej byś na ty wyszła gdybyś używała "uniwersalnej" mavenowej struktury katalogów ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.