2013-10-01 4 views
0

에서 재사용 가능한 기능의 전체 클래스를 포함, 정말 같은 파일을 가질 수 있습니다가 PHP에서 다른 클래스

function isPrime($num) 
{ 
    return true; 
} 

function sayYes() 
{ 
    echo "yes\n"; 
} 

이것은 mycode라는 이름의 폴더에 functions.php라는 이름의 파일에있을 것입니다.
나는 다른 파일이 있습니다

include "../functions.php"; 
if (isPrime()) { 
    sayYes(); 
} 

file1라는 이름의 폴더에 file1.php라는 이름의 파일에 있습니다. file1 폴더는 mycode 폴더 안에 있습니다.

이 예제의 요점은 내가 다른 파일에서 다시 사용할 수 있기를 원하는 모든 기능을 가진 파일이 있다는 것입니다. mycode 폴더 안에 많은 폴더가 있습니다 (file1, file2, file3 등). 이러한 각 하위 폴더의 모든 코드는 완전히 분리되어 있으며 다른 모든 하위 폴더의 모든 코드와 관련이 없습니다. 그러나 모든 하위 폴더의 코드에서 사용하려는 일부 일반 함수가 있으므로 최상위 폴더에 배치됩니다.

package com.awesome.mycode.file1; 

public class File1 
{ 
    public static void main(String[] args) 
    { 
     MyCodeFunctions.sayYes(); 
    } 
} 

이 위와 같은 file1 폴더에 File1.java라는 이름의 파일에 있습니다 :

자바, 난 파일과 같이 있습니다. 위와 같은 mycode 폴더에,

package com.awesome.mycode; 

public class MyCodeFunctions 
{ 
    public static void sayYes() 
    { 
     System.out.println("yes"); 
    } 
} 

MyCodeFunctions.java라는 이름의 파일에 있습니다
나는 다른 파일과 같이 있습니다.
어떻게 내가 MyCodeFunctions.java이있는 폴더 아래 다양한 하위 폴더에 클래스에 MyCodeFunctions.java를 재사용 할 수있는이 두 클래스와 같은 컴파일 않습니다

내 질문은 이것이다? 어떤 종류의 import 문을 File1.java 상단에 놓아야합니까? MyCodeFunctions.java을 JAR 파일로 컴파일해야합니까? 그렇다면 어떻게? File1.java을 컴파일 할 때이 JAR 파일을 링크하기 위해 명령 줄에서 무엇을 실행해야합니까?

나는 PHP와 같은 언어에서 찾을 수있는 include 진술과는 다른 패러다임이라는 것을 알고 있습니다. 이것이 바로이 질문의 요점입니다. 차이점이 있다는 것을 알고 있으며, Java 패러다임에서이를 수행하는 것과 동등한 방법이 무엇인지 알고 싶습니다. IDE를 사용하여이 작업을 수행하고 싶지는 않습니다. 수동으로 작업하는 것이 얼마나 복잡한 지는 제게 중요하지 않습니다.

Linux를 사용하여이 작업을 수행하고 있지만 Windows 컴퓨터에서도 쉽게 수행 할 수 있습니다.

package com.awesome.mycode.file1; 

import com.awesome.mycode.MyCodeFunctions; 

public class File1 
{ 
    public static void main(String[] args) 
    { 
     MyCodeFunctions.sayYes(); 
    } 
} 

import는 동일한 패키지의 클래스에 대한 불필요 :

+0

'가져 오기' 어쩌면 도움이 될까요? http://stackoverflow.com/questions/10834589/netbeans-how-can-i-include-external-jar-fileslibraries-in-the-jar-file-of -my – YAMM

답변

2

자바에서는 import 문을 사용합니다.

package com.awesome.mycode.file1; 

import static com.awesome.mycode.MyCodeFunctions.sayYes; 

public class File1 
{ 
    public static void main(String[] args) 
    { 
     sayYes(); 
    } 
} 

당신은 모든 클래스를 가져올 마지막 위치에 와일드 카드로 *를 사용할 수 있습니다 sayYes() 이후

는 클래스 한정자없이 기능을 사용할 수 있도록 해주는 변화가있을하는 static 기능입니다 (import 문) 또는 모든 정적 멤버 — 필드와 메서드 & mdash (import static 문에 대한). /com이 포함 된 폴더로,

/com 
    /awesome 
     /mycode 
      /file1 
       File1.java 
      MyCodeFunctions.java 

는 컴파일하려면 CD를하고 명령 줄을 사용하십시오 :

편집

이 두 파일을 컴파일하려면 소스 트리가 다음과 같이한다

javac com/awesome/mycode/MyCodeFunctions.java com/awesome/mycode/file1/File1.java 

기타 원하는 옵션 (출력 제어 등)은에 문의하십시오. 자세한 내용은210 페이지를 참조하십시오.

+0

파일의 상단에'import com.awesome.mycode.MyCodeFunctions; '를 넣는 것은 내가하고있는 일이며 작동하지 않습니다. 이것이 적절한 import 문이라면, 컴파일러에게 File1이있는 폴더와 다른 폴더에 MyCodeFunctions가 있는지 알려줄 필요가 있습니다. –

+0

@MatthewG - [패키지 생성 및 사용법] (http : //docs.oracle.com/javase/tutorial/java/package/packages.html)에서 원하는 작업을 수행하는 방법 (특히 [소스 및 클래스 파일 관리]의 하위 섹션 (http : // docs .oracle.com/javase/tutorial/java/package/managingfiles.html)). –

+0

나는'javac File1.java ../ MyCodeFunctions.java','javac -cp .. File1.java','javac -cp ../MyCodeFunctions.java File1.java','javac -cp '를 실행하려고 시도했습니다. ./MyCodeFunctions.jar File1.java' (Jar 파일로 컴파일 된 MyCodeFunctions.java) 및 컴파일을 시도하는 데있어 많은 다른 변형을 모두 성공하지 못했습니다. 실제로 지시 한 링크에는 컴파일 명령의 예제가 없습니다. –

관련 문제