명령 줄에서 java .class를 실행하는 방법
컴파일 된 자바 클래스가 있습니다.
Echo.class
public class Echo {
public static void main (String arg) {
System.out.println(arg);
}
}
I cd
디렉토리로 이동하여 다음을 입력합니다.java Echo "hello"
이 오류가 발생합니다.
C:\Documents and Settings\joe\My Documents\projects\Misc\bin>java Echo "hello"
Exception in thread "main" java.lang.NoClassDefFoundError: Echo
Caused by: java.lang.ClassNotFoundException: Echo
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Echo. Program will exit.
Eclipse IDE를 사용해야하는 것과 같이 명령 줄에서 실행할 수있는 형식으로 Java 코드를 얻는 가장 간단한 방법은 무엇입니까?
시험:
java -cp . Echo "hello"
다음으로 컴파일했다고 가정합니다.
javac Echo.java
그러면 "현재"디렉토리가 클래스 경로에 없을 가능성이 있습니다 (java가 .class 정의를 찾습니다).
이 경우 디렉토리의 내용이 표시됩니다.
Echo.java
Echo.class
그러면 다음 중 하나가 작동 할 수 있습니다.
java -cp . Echo "hello"
또는
SET CLASSPATH=%CLASSPATH;.
java Echo "hello"
나중에 Fredrik이 지적한 것처럼 다른 오류 메시지가 표시됩니다.
스레드 "main"java.lang.NoSuchMethodError : main 예외
그럴 때 가서 그의 대답을 읽으십시오 :)
클래스 경로를 지정해야합니다. 이렇게해야합니다.
java -cp . Echo "hello"
이것은 자바가 .
(현재 디렉토리)를 클래스 경로, 즉 클래스를 찾는 장소 로 사용하도록 지시 합니다. 패키지를 사용할 때 클래스 경로에는 패키지 하위 디렉터리가 아닌 루트 디렉터리가 포함되어야합니다. 예를 들어 클래스가 my.package.Echo
이고 .class 파일이 bin/my/package/Echo.class
이면 올바른 클래스 경로 디렉토리는 bin
입니다.
유효한 기본 메서드가 없습니다 ... 서명은 다음과 같아야합니다. public static void main ( String [] args);
따라서 귀하의 경우 코드는 다음과 같습니다.
public class Echo {
public static void main (String[] arg) {
System.out.println(arg[0]);
}
}
편집 : 당신이 누락되었다는 점에서 Oscar 가 옳다는 점에 유의하십시오 . 클래스 경로에서 해당 오류를 처리 한 후 내가 해결하는 문제에 부딪 힐 것입니다.
Java 11을 사용하면 더 이상이 rigmarole을 통과 할 필요가 없습니다!
대신 다음을 수행 할 수 있습니다.
> java MyApp.java
You don't have to compile beforehand, as it's all done in one step.
You can get the Java 11 JDK here: JDK 11 GA Release
There could be several things wrong - here is a tutorial that should get you started: Running Java as a Command Line Application.
My situation was a little complicated. I had to do three steps since I was using a .dll in the resources directory, for JNI code. My files were
S:\Accessibility\tools\src\main\resources\dlls\HelloWorld.dll
S:\Accessibility\tools\src\test\java\com\accessibility\HelloWorld.class
My code contained the following line
System.load(HelloWorld.class.getResource("/dlls/HelloWorld.dll").getPath());
First, I had to move to the classpath directory
cd /D "S:\Accessibility\tools\src\test\java"
Next, I had to change the classpath to point to the current directory so that my class would be loaded and I had to change the classpath to point to he resources directory so my dll would be loaded.
set classpath=%classpath%;.;..\..\..\src\main\resources;
Then, I had to run java using the classname.
java com.accessibility.HelloWorld
If you have in your java source
package mypackage;
and your class is hello.java with
public class hello {
and in that hello.java you have
public static void main(String[] args) {
Then (after compilation) changeDir (cd) to the directory where your hello.class is. Then
java -cp . mypackage.hello
Mind the current directory and the package name before the class name. It works for my on linux mint and i hope on the other os's also
Thanks Stack overflow for a wealth of info.
First, have you compiled the class using the command line javac compiler? Second, it seems that your main method has an incorrect signature - it should be taking in an array of String objects, rather than just one:
public static void main(String[] args){
Once you've changed your code to take in an array of String objects, then you need to make sure that you're printing an element of the array, rather than array itself:
System.out.println(args[0])
If you want to print the whole list of command line arguments, you'd need to use a loop, e.g.
for(int i = 0; i < args.length; i++){
System.out.print(args[i]);
}
System.out.println();
참고URL : https://stackoverflow.com/questions/1279542/how-to-execute-a-java-class-from-the-command-line
'programing' 카테고리의 다른 글
src / androidtest와 src / test 폴더의 차이점은 무엇입니까? (0) | 2020.08.13 |
---|---|
Visual Studio Code는 어떤 종류의 Regex를 사용합니까? (0) | 2020.08.13 |
Python 코드를 한 줄씩 프로파일 링하려면 어떻게해야합니까? (0) | 2020.08.13 |
오류 메시지에서 실제 저장 프로 시저 줄 번호를 어떻게 얻을 수 있습니까? (0) | 2020.08.13 |
휘발성은 비쌉니까? (0) | 2020.08.13 |