Javac Ve Package Sorunu
-
Arkadaslar java ile ilgili soyle bir sorunum var.
Iki tane class olusturtuyorum. Birincisi (BasicWindowMonitor.java) su sekilde
import java.awt.event.*; import java.awt.Window; public class BasicWindowMonitor extends WindowAdapter { public void windowClosing(WindowEvent e) { Window w = e.getWindow(); w.setVisible(false); w.dispose(); System.exit(0); } }
Ikincisi de ( HosgeldinizSWF.java )
import javax.swing.*; import BasicWindowMonitor; public class HosgeldinizSWF { public static void main(String args[]) { JLabel etiket = new JLabel("Java'ya hosgeldiniz"); JFrame cerceve = new JFrame("HosgeldinizSWF"); cerceve.addWindowListener(new BasicWindowMonitor()); cerceve.getContentPane().add(etiket); cerceve.setSize(100,100); cerceve.setVisible(true); } }Ben birinisini javac ile compile ediyorum erro vermiyor. Fakat ikincisini compile etmeye kalktigimda BasicWindowMonitor not found hatasi veriyor.
package pck; ekledim ikisinede olmadi. import pck yaptim olmadi. Ayni sey net beans ile hallediyorum sikinti yok.
Ben cmd den javac kullanarak yapmak istiyorum bunu. Paketlerle ilgili bir sikinti var ama nasil yapmam gerek. Java bilen biri aydinlatsin. Kisacasi ayri bir dosyaya yazip olusturdugum class'i baska bir dosyada import edip kullanmak istiyorum. Bunu da javac kullanarak yapmak istiyorum.
Tesekkurler
dhmm tarafından 02/Oca/16 18:10 tarihinde düzenlenmiştir -
Hocam package belirtmediğin sınıflar default packagededir. Bunları beraber derliyorsan, aynı klasördeyse ve . (şuanki klasör) class path te ise sorun olmaması lazım.
Ayrıca ciddi programlarda mutlaka package belirtmelisin. Package belirttikten sonra ise class path a dahil dizinler içinde packageye göre bir klasör yapısı oluşturup sınıfları bu şekilde yerleştirmen lazim.
yani package com.tahribat.dhmm ve Hello sınıfı için, com/tahribat/dhmm/Hello.class gibi.
-
j4x bunu yazdı
Hocam package belirtmediğin sınıflar default packagededir. Bunları beraber derliyorsan, aynı klasördeyse ve . (şuanki klasör) class path te ise sorun olmaması lazım.
Ayrıca ciddi programlarda mutlaka package belirtmelisin. Package belirttikten sonra ise class path a dahil dizinler içinde packageye göre bir klasör yapısı oluşturup sınıfları bu şekilde yerleştirmen lazim.
yani package com.tahribat.dhmm ve Hello sınıfı için, com/tahribat/dhmm/Hello.class gibi.
Hocam first.java (first classi) ve second.java (second classi) ayni klasorde ve package yok.
Ben javac first.java deyince ok.javac second.java ddyince ok.
Ama ne zaman second.java icine import first; diyorum icine ediyor. Isin garip tarafi ayni kodlar netbeansta calisiyor. Ben idesiz gormek istiyorum. Olmadi gitti . Nryi eksik yapiyom acaba. Classpath olayi nedir ?
dhmm tarafından 02/Oca/16 01:30 tarihinde düzenlenmiştir -
Hocam ayni packageda olan classlar birbirine otomatik olarak import edilmiş gibidir. Neden firsti import etmeye çalışıyorsun onu da anlamadım.
Hata mesaji fln ne verdiğini söylersen daha iyi olur.
j4x tarafından 02/Oca/16 02:08 tarihinde düzenlenmiştir -
hatayi bi atarmisn hocam resim birde netbeansde nasil kullandiginin resmini.
edit : resime bakarsan sknti yok bende
https://www.evernote.com/shard/s672/sh/583acbe7-7902-4220-b8c3-e42c0ee68388/a2430921c1248bda
Absolut tarafından 02/Oca/16 11:22 tarihinde düzenlenmiştir -
Aynı package' da ise bir sıkıntı çıkarmaması lazım hocam.
Zaten class' lar içinde birbirlerinden çağırırken farklı package' larda ise belirtiyorsun.
javac ile derleyince o zaten içerisinde buluyor.
-
hocam bunun bi suru baska baska yollari var. ne yapman gerektigine gore degisebilir cozum ama senin icin en basiti HosgeldinizSWF.java nin icinde bir tane BasicWindowMonitor instance yaratman onceden; sonradanda o variable i kullanman;
ornek sekil bir A asagida;
import javax.swing.*; public class HosgeldinizSWF { public static void main(String args[]) { BasicWindowMonitor myMonitor = new BasicWindowMonitor(); JLabel etiket = new JLabel("Java'ya hosgeldiniz"); JFrame cerceve = new JFrame("HosgeldinizSWF"); cerceve.addWindowListener(myMonitor); cerceve.getContentPane().add(etiket); cerceve.setSize(100,100); cerceve.setVisible(true); } } -
compiled and run with no problem :)

-
Bir kitap indirdim bir linkten. orada import BasicWindowMonitor var. onu cikardim package koymadan calisti.
notepad++ ile yazip javac ile yaptim.
BasicWindowMonitor.java
import java.awt.event.*; import java.awt.Window; public class BasicWindowMonitor extends WindowAdapter { public void windowClosingEvent(WindowEvent e) { Window w = e.getWindow(); w.setVisible(false); w.dispose(); System.exit(0); } }
Program.java
import javax.swing.*; public class Program { public static void main(String args[]) { JLabel etiket = new JLabel("Etiket"); JFrame cerceve = new JFrame("Frame basligi"); cerceve.addWindowListener(new BasicWindowMonitor()); cerceve.getContentPane().add(etiket); cerceve.pack(); cerceve.setVisible(true); } }Bu seferde exit atmiyor. Window Adapter kullaniyorum ve windowClosingEvent var neden oyle ?
dhmm tarafından 02/Oca/16 15:41 tarihinde düzenlenmiştir -
dhmm bunu yazdı
Bir kitap indirdim bir linkten. orada import BasicWindowMonitor var. onu cikardim package koymadan calisti.
notepad++ ile yazip javac ile yaptim.
BasicWindowMonitor.java
import java.awt.event.*; import java.awt.Window; public class BasicWindowMonitor extends WindowAdapter { public void windowClosingEvent(WindowEvent e) { Window w = e.getWindow(); w.setVisible(false); w.dispose(); System.exit(0); } }
Program.java
import javax.swing.*; public class Program { public static void main(String args[]) { JLabel etiket = new JLabel("Etiket"); JFrame cerceve = new JFrame("Frame basligi"); cerceve.addWindowListener(new BasicWindowMonitor()); cerceve.getContentPane().add(etiket); cerceve.pack(); cerceve.setVisible(true); } }Bu seferde exit atmiyor. Window Adapter kullaniyorum ve windowClosingEvent var neden oyle ?
Tamam halloldu :) Nerden estiyse fonksiyon adinin sonuna event yazmisim :)
dhmm tarafından 02/Oca/16 16:57 tarihinde düzenlenmiştir
