.java를 컴파일해서 class를 만들때요, 두개의 소스가 서로를 참

GoodWolf의 이미지

안녕하세요?
..
DBconn.java와 CommonFunc.java두개의 파일이 있구요.
..
그 안에

DBconn.java는 CommonFunc.java의 함수(? 클래슨가요? )를

import comm.func.CommonFunc 이렇게 임포트하고

..
CommonFunc.java는 DBconn.java의

import comm.db.DBConnectionManager

(?? 클래슨가? ^^ ) 를 import시키네요..

이럴때 이 파일들을 컴파일해서 class파일을 생성하고 싶은데
..
어케 해야 할지... +_+
..

litdream의 이미지

되도록이면 cross reference 를 만들지 말아야 합니다만,
저럴경우는 어떻게 해야할까 궁금해서, 꽁수로 한개의 화일로 묶어봤습니다.
보기는 안좋지만, 급할때는 이렇게 할수도 있겠군요..

$ cat CrossDepend.java

import java.io.*;

class A {
   A() {}
   public void neighbor() {
      System.out.println(new B());
   }
   public String toString() { 
      return "Object A"; 
   }
}

class B {
   B() {}
   public void neighbor() {
      System.out.println(new A());
   }
   public String toString() { 
      return "Object B"; 
   }
}

public class CrossDepend {
   static public void main(String[] args) {
      A a = new A();
      B b = new B();
      
      a.neighbor();
      b.neighbor();
   }
}

삽질의 대마왕...

hys545의 이미지

litdream wrote:
되도록이면 cross reference 를 만들지 말아야 합니다만,
저럴경우는 어떻게 해야할까 궁금해서, 꽁수로 한개의 화일로 묶어봤습니다.
보기는 안좋지만, 급할때는 이렇게 할수도 있겠군요..

$ cat CrossDepend.java

import java.io.*;

class A {
   A() {}
   public void neighbor() {
      System.out.println(new B());
   }
   public String toString() { 
      return "Object A"; 
   }
}

class B {
   B() {}
   public void neighbor() {
      System.out.println(new A());
   }
   public String toString() { 
      return "Object B"; 
   }
}

public class CrossDepend {
   static public void main(String[] args) {
      A a = new A();
      B b = new B();
      
      a.neighbor();
      b.neighbor();
   }
}

이거 꽁수아닌데여
gnu classpath나 kaffe에도 저런식으로 만든 소스 들어잇습니다.
참고로 저런거 컴파잏하면 3개의 클래스 파일이 만들어집니다.
단지 분석에 문제가 있을뿐입니다.

즐린

narusas의 이미지

그냥 컴파일 됩니다.
별도의 파일로 만들어도 컴파일러가 알아서 컴파일 합니다.

atdda의 이미지

javac -classpath somepath -sourcepath src_path -d out_path src_path/comm/db/*.java

May The Force Be With You.

litdream의 이미지

아~ 역시 자바를 아직 잘 몰라서, 이런것이 Cross dependency 가 되는지 아닌지도
구분을 잘 못하는군요... :oops:
만약에 따로해도 컴파일이 된다면, 이 예제는 무시해 주시기 바랍니다.

삽질의 대마왕...

GoodWolf의 이미지

고맙습니다. ^^..
..
여러 고수님들 덕분에 많이진척되었구요. +_+
..
그런데 아래와 같은 워닝이 뜨네요. +_+
..
어찌 된건지..
..
워닝이면 무시해도 될런지요..

Quote:

./DBConnectionManager.java:168: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.Hashtable
pools.put(poolName, pool);
^
./DBConnectionManager.java:243: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
drivers.addElement(driver);
^
./DBConnectionManager.java:316: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
freeConnections.addElement(con);
^
./DBConnectionManager.java:420: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
freeConnections.addElement(con);
^
4 warnings

No pains! No gains!

yob의 이미지

Quote:
./DBConnectionManager.java:168: warning: [unchecked] unchecked call to put(K,V) as a member of the raw type java.util.Hashtable
pools.put(poolName, pool);
^
./DBConnectionManager.java:243: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
drivers.addElement(driver);
^
./DBConnectionManager.java:316: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
freeConnections.addElement(con);
^
./DBConnectionManager.java:420: warning: [unchecked] unchecked call to addElement(E) as a member of the raw type java.util.Vector
freeConnections.addElement(con);
^
4 warnings

지금 쓰시는 java version 이 1.5 버전이고 프로그램 되어있는 version 이
아마도 1.4 version 이하인것 같네요 :D

저도 자세히는 보지 않았지만 java 1.5 version 에서는 좀더
명시적으로 클래스를 선언해줘야 했던것 같습니다.
1.5 version 의 vector, hashtable 쪽 api 를 자세히 한번 읽어보시면
금방 답이 나올것 같네요

http://forum.java.sun.com/thread.jspa?forumID=31&threadID=552962

GoodWolf의 이미지

고맙습니다. ^^
..

No pains! No gains!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.