2017-09-12 2 views
0

나는 해결책을 찾고있다. 쉘 스크립트 명령을 사용하여 JAVA 프로그램으로 작성된 메소드를 호출해야합니다. 비 main 방법으로 전화 할 수있는 방법이 있습니까?쉘 스크립트를 사용하여 JAVA 클래스 메서드를 호출하는 방법은 무엇입니까?

.sh 파일을 사용하여 프로그램을 시작합니다 (& 중지). 어떤 식 으로든 내가 아닌 "기본"메서드를 호출하는 스크립트를 작성할 수 있습니다.

+0

main 메소드가 아닌 메소드를 직접 호출 할 수는 없으며 main 메소드에 인수를 전달하고 입력 (if-else 사용) 메소드를 호출하여 시작 또는 중지 할 수 있습니다. – Batty

+2

이것이 XY 문제라고 생각합니다 - https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem - 실제로 달성하기를 원하십니까? – slim

+0

전화를 걸 방법에 대한 예를 제공해 주시겠습니까? – SubOptimal

답변

2

셸 스크립트에서만 main 메서드를 호출 할 수 있습니다.

예는 다음

class Test 
{ 
    public static void main(String []arg) 
    { 
     String input = arg[0]; 
     if ("start".equals(input)) 
      //call start method 
     else if ("stop".equals(input)) 
      //call stop method 
     else 
      //define default behaviour 
    } 
} 

java -cp /path/class Test start 

이 테스트 클래스 main 메소드를 호출하고 start 인수로서 전달한다.

-cp은 java 클래스 파일의 경로를 나타냅니다. java의 경로가 이미 환경에 설정되어 있다고 가정합니다.

편집 : 당신은 대신 통화 방법은 시작하거나

+0

비 메인 메소드를 호출하는 방법이 있습니까? – Ash

+0

직접적으로는 아니지만 해결 방법은 maiin에서 해당 메서드를 호출하는 것입니다. – Batty

1

을 중지 (IF-다른 사용) 당신이 원하는 경우 입력에 주요 메소드에 인수를 전달하고 기반 수 있습니다, 직접 논 메인 메소드를 호출 할 수 없습니다 쉘에서 메소드를 호출하면 애플리케이션의 진입 점이 될 것입니다. 원하는 메소드를 호출하는 main 메소드로 클래스를 작성하고 jar을 빌드 한 다음이를 일반 Java 어플리케이션으로 실행하십시오.

1

다음 MyFirstJavaProgram.java

public class MyFirstJavaProgram { 

    /* This is my first java program. 
    * This will print 'Hello World' as the output 
    */ 

    public static void main(String []args) { 
     System.out.println("Hello World"); // prints Hello World 
    } 
} 

그리고 컴퓨터에 올바르게 설치 자바 감안할 때, 다음과 같은

C:\> javac MyFirstJavaProgram.java 
C:\> java MyFirstJavaProgram 
Hello World 
0

몇 가지 옵션이 있습니다 수행 할 수 있습니다

  • 간단한 방법은 : 호출하는 메소드를 어떻게 든 고칠 수 있습니다. 예를 들어, 메인 클래스는 숫자 인수를 파싱하여 테이블 내에서 호출하는 메서드를 "lookup"하는 데 사용합니다.
  • reflection을 사용하여 메서드 이름을 읽는 단일 main() 메서드를 구현할 수 있습니다 (명령 줄에서 둘러싸는 클래스)의 이름조차, 다음 (의 "다른 방법은"당신이 호출 할
  • 당신이 반사를 방지 할 수 있으며, 기본적으로 당 하나main() 방법 이 "별"을 실행합니다 물론, 당신은 많은 클래스들로 끝남을 의미합니다 - 각각 하나는 main() 안에 있습니다.
  • 당신은 jython을 볼 수 있습니다 :이 도구는 파이썬 인터프리터 내부에서 특정 JVM 인스턴스를 실행할 수 있습니다.

자이 썬 솔루션이 더 효과적 일 수 있습니다. 그러나 "실제"문제를 해결하려는 경우이 방법이 가장 먼저 선택되어야합니다.

+0

질문에 의해 입증 된 프로그래밍 기술 수준을 감안할 때 이러한 제안은 비현실적입니다. –

+0

그 편집은 균형이 잡혀 있으므로 투표를 삭제했습니다. –

+0

빠른 컴백에 감사드립니다. 당신의 결정을 완전히 뒤집어서 업보트의 방향으로 인도하기 위해 누락 된 것이 무엇인지를 암시 해주십시오. ;-) – GhostCat

관련 문제