728x90
반응형
JAVA\bin
폴더에 runJava.bat
같은 batch 파일을 생성. [예] C:\Program Files\Java\jdk1.8.0_25\bin\runJava.bat
.
속성 - 보안 - 사용 권한 병경 [편집] - Users/kipid - 수정 허용 체크.
Text editor 로 아래와 같이 내용을 넣고 저장.
```[.linenums.scrollable.lang-bat]
@REM encoding must be EUC-KR with Korean folder name.
@ECHO OFF
:: destination of class to be created
SET DC=C:\Recoeve\classes
:: The whole CLASSPATH list splited by ";"
SET CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_25\lib;C:\Recoeve\classes;C:\Recoeve\classes\javax.mail.jar;C:\Program Files (x86)\MySQL\Connector.J 5.1\mysql-connector-java-5.1.33-bin.jar
@REM mysql-connector.jar;javax.mail.jar
:: %~nx1 expands %1 [arg 1] to "file name + extension". e.g. "HelloWorld.java"
ECHO Compiling %~nx1
:: Compile %~nx1 with {filename:%~nx1, encoding:utf8, destination:%DC%, classpath:%CLASSPATH%}
javac %~nx1 -encoding utf8 -d "%DC%" -classpath "%CLASSPATH%"
IF NOT %ERRORLEVEL%==0 GOTO :EOF
:: source directory
SET SD=%CD%
@REM or SET SD=%~dp1
:: %SD%\%~n1 gives [source directory]\file_name. e.g. "C:\Recoeve\sources\kipid\hello\HelloWorld".
SET packSD=%SD%\%~n1
@REM or SET packSD=%~dpn1
:: Replace "C:\Recoeve\sources\" to "" [empty] of %packSD%. e.g. "kipid\hello\HelloWorld".
SET CN=%packSD:C:\Recoeve\sources\=%
:: Replace "\" to "." of %cn%. e.g. "kipid.hello.HelloWorld"
:: This is a class name with JAVA package included.
SET CN=%CN:\=.%
ECHO --- OUTPUT: %CN% %2 %3 %4 %5 %6 %7 %8 %9 ---
:: Change directory to the %DC% [destination of class to be created].
CD %DC%
:: Run/Execute the class created.
java -Dfile.encoding=UTF8 -classpath "%CLASSPATH%" %CN% %2 %3 %4 %5 %6 %7 %8 %9
:: Back to source directory
CD %SD%
```/
### Test
파일 C:\Recoeve\sources\kipid\hello\Hello.java
에 다음과 같이 저장.
```[.linenums]
package kipid.hello;
class Hello{
public static void main(String... args){
System.out.println("Hello World! 한글!");
for (String arg : args) {
System.out.println("Hello "+arg);
}
}
}
```/
cmd 프롬프트에서 runJava Hello.java
를 해당파일이 위치한 폴더 C:\Recoeve\sources\kipid\hello
에서 실행하면 다음과 같이 나옴.
```[.linenums]
C:\Recoeve\sources\kipid\hello> runJava Hello.java arg1 arg2 arg3
Compiling Hello.java
--- OUTPUT: kipid.hello.Hello ---
Hello World! 한글!
Hello arg1
Hello arg2
Hello arg3
```/
### Sublime Text 3 - Build System
Sublime Text 3 - Menu 에서 Tools - Build System - New Build System...
클릭. 아래 텍스트 복사해서 저장. 자동으로 Data\Packages\User
폴더에 저장될거임.
직접 Sublime Text 3 가 설치된 폴더에서 Data\Packages\User
에 runJavaC.sublime-build
파일을 만들어서 저장해도 됨. [예] C:\Users\강수\Documents\DaumCloud\Sublime Text Build 3059 x64\Data\Packages\User\runJavaC.sublime-build
.
```[.linenums.lang-json]
{
"cmd": ["runJava.bat", "$file_name"]
// , "file_regex": "^(...*?):([0-9]*):?([0-9]*)"
, "selector": "source.java"
, "encoding": "utf-8" // "cp949"
}
```/
Press Ctrl+B
: Build
파일 C:\Recoeve\sources\kipid\hello\Hello.java
을 Sublime Text 에서 열고, Ctrl+B
를 누르면 자동으로 실행 됨. Tools - Build System - runJavaC
를 선택해야 할지도...
## Mac OS, and possibly Unix/Linux
우선 JAVA 를 설치. 설치되면 Mac Terminal (or iTerm) 에서 다음과 같이 떠야 함. 설치할때 보통 자동으로 JAVA PATH 를 PATH 에 추가시켜 주기 때문에 어느 폴더에서 java
, javac
를 실행해도 동작 하는듯.
```[.linenums.scrollable.lang-sh]
$ javac -version
javac 1.8.0_141
$ java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
// 요 아래는 그냥 참고용으로.
$ javac
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-parameters Generate metadata for reflection on method parameters
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-h <directory> Specify where to place generated native header files
-implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-profile <profile> Check that API used is available in the specified profile
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
-Werror Terminate compilation if warnings occur
@<filename> Read options and filenames from file
$ java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-server to select the "server" VM
The default VM is server,
because you are running on a server-class machine.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose:[class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
Warning: this feature is deprecated and will be removed
in a future release.
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -no-jre-restrict-search
Warning: this feature is deprecated and will be removed
in a future release.
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions with specified granularity
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions with specified granularity
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details.
```/
### shell script (runJava.sh)
다음과 같은 shell script file 을 만들고 저장.
```[.linenums]
#!/bin/sh
# chmod 755 runJava.sh
# cp runJava.sh /usr/local/bin/
FILE_BASE_NAME=$1
if [ -f "${FILE_BASE_NAME}.java" ]; then
echo $PWD # Print Working Directory.
PACKAGE=$2
D=$3
CLASSPATH=.:/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/jre/lib:${D}
echo "Compiling ${FILE_BASE_NAME}.java"
javac ${FILE_BASE_NAME}.java -encoding utf8 -d ${D} -classpath ${CLASSPATH}
else
echo "File ${FILE_BASE_NAME}.java does not exist."
fi
if [ $? == 0 ]; then
cd $D
CLASSFILE=./${PACKAGE//./\/}/${FILE_BASE_NAME}
if [ -f "${CLASSFILE}.class" ]; then
echo "--- OUTPUT: ${PACKAGE}.${FILE_BASE_NAME} $4 $5 $6 $7 $8 $9 ---"
java -Dfile.encoding=UTF8 -classpath ${CLASSPATH} ${PACKAGE}.${FILE_BASE_NAME} $4 $5 $6 $7 $8 $9
else
echo "File ${CLASSFILE}.class does not exist."
fi
fi
```/
Mac Terminal (or iTerm) 에서 runJava.sh
에 실행권한을 주고, /usr/local/bin/
폴더로 복사.
```
$ chmod 755 runJava.sh
$ cp runJava.sh /usr/local/bin/
```/
### Test
파일 /Users/kipid/Documents/sources/kipid/hello/Hello.java
에 다음과 같이 저장.
```[.linenums]
package kipid.hello;
import java.lang.Math;
public class Hello {
public static void main(String... args) {
System.out.println("Hello World! 한글!");
for (String arg : args) {
System.out.println("Hello "+arg);
}
System.out.println(System.getProperty("java.class.path"));
System.out.println(System.getProperty("java.home"));
System.out.println(System.getProperty("user.dir"));
System.out.println(System.getProperty("user.name"));
System.out.println(System.getProperty("user.home"));
System.out.println(Math.abs(-1));
}
}
```/
다음과 같이 실행하면 됨. (첫번째 argument 로 file_base_name 을, 두번째로 package, 세번째로 class 파일을 저장할 destination, 그 다음부터는 JAVA 파일 실행시 넘겨줄 arguments 를...)
```[.linenums]
$ runJava.sh Hello kipid.hello /Users/kipid/Documents/classes arg1 arg2 arg3
/Users/kipid/Documents/sources/kipid/hello
Compiling Hello.java
--- OUTPUT: kipid.hello.Hello arg1 arg2 arg3 ---
Hello World! 한글!
Hello arg1
Hello arg2
Hello arg3
.:/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/jre/lib:/Users/kipid/Documents/classes
/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/jre
/Users/kipid/Documents/classes
kipid
/Users/kipid
1
```/
### Sublime Text 3 - Build System
```[.linenums]
{
"cmd": ["runJava.sh"
, "$file_base_name" // $1 : file_base_name
, "kipid.hello" // $2 : package
, "/Users/kipid/Documents/classes" // $3 : -d (destination)
, "arg1", "arg2", "arg3" // $4 ...
]
, "path": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
// , "file_regex": "^(...*?):([0-9]*):?([0-9]*)"
, "selector": "source.java"
, "encoding": "utf-8"
}
```/
Press Command+B
: Build
## RRA
- Compile and Run Java programs with Sublime Text 2, 2012-11-24, by Prashant
- Sublime Text Unofficial Documentation - en/latest/reference/build_systems.html
- kipid's blog :: Installing and Learning JAVA (자바 깔고 배우기.)
- https://www.shellscript.sh/index.html
- https://www.tutorialspoint.com/unix/unix-what-is-shell.htm
- Wiki - Batch file and wikibooks.org - Windows Batch Scripting
Batch and Shell script
728x90
반응형
'[IT/Programming]' 카테고리의 다른 글
정렬법 (Sorting Algorithm) (0) | 2023.06.01 |
---|---|
Open AI chatbot ChatGPT 가 신 (GOD) 이 될 수 있을까? (0) | 2023.05.30 |
Web site - 다국어 지원 (multi-language support) (0) | 2022.12.28 |
움직이는 사진 gif 만들기 (GifCam.exe) (1) | 2019.03.06 |
한국 IT의 미래 (0) | 2019.03.04 |
JAVA SE 8 - API - index with Fuzzy Search (0) | 2019.02.19 |
가상 현실 (VR : Virtual Reality) 개발 (0) | 2019.02.19 |