본문 바로가기

Programming/Java_Etc25

jpackage를 이용한 배포 1. jlink를 이용한 jre만들기jlink --module-path "%JAVA_HOME%\jmods;%JAVA_HOME%\lib;javafx-jmods-17.0.16" --add-modules java.base,java.desktop,java.instrument,java.management,java.naming,java.scripting,java.sql,jdk.attach,jdk.jdi,jdk.jfr,jdk.net,jdk.security.jgss,jdk.unsupported,javafx.controls,javafx.fxml --output custom-runtime 2. terminal 입력jpackage --name javafx05 --input . --main-jar j.. 2025. 7. 16.
launch4j를 이용한 JavaFX exe배포하기 어쩌다보니 Maven에 익숙해졌고, 이번 프로젝트는 Mybatis, JavaFX가 함께 들어가는 프로젝트가 되었다. 이걸 만드는데까지는 괜찮았는데, 배포하려니 또 어렵다. 중요한건 jre와 javafx-sdk가 jar파일 또는 exe파일과 함께 있어야 한다는 것이다. 1. jre각종 버전 문제를 피하기 위해 배포할때엔 런타임환경을 함께 구성해서 배포하는게 낫겠다고 판단했다. jre는 새로 다운받는게 아니라, jdk폴더의 bin, lib, conf폴더만 복사해서 가져오면 된다. /jre ㄴ/bin ㄴ/lib ㄴ/conf 위의 방식으로는 자바가 전혀 안깔린 PC에서는 작동하지 않는다. 아래의 jlink 명령어로 jre를 만든다. 이렇게하면 javafx까지 포함된 jre가 만들어진다... 2025. 7. 1.
JavaFX - MyBatis - Serial 통신 예제 C# WPF로 작업하던 프로그램이 오류를 뱉는데, 디버깅이 안되어 Java로 전부 바꾸는 실험을 했다. WPF는 Visual Studio Code에서 만든거라, 디버깅이 좀 힘들었다. 반면에 Java는 무료이면서도 강력한 IntelliJ가 있다. 물론 이클립스도 있다. 이번엔 IntelliJ로 프로젝트를 만들었는데, 사실 그것도 처음이라 좀 많이 힘들었다. 이번 프로젝트는 출입 통제하는 프로그램이다. 자료실에 드나드는 사람에게 ID 태그를 읽혀서 들어올땐 "안녕하세요", 나갈땐 "안녕히가세요"를 출력해주고, 다른 탭에서 전체 출입인원 목록을 확인하면 된다. 프로젝트 구성은 아래와 같다. Spring Boot를 해본 사람이라면 좀 익숙할 수도 있겠다. 그것과 비슷한 구조로 만들려고 신경을 써봤다. 각 파일.. 2025. 6. 26.
Java 폴더 하위폴더 하위 파일 복사 재귀적으로 처리하는 여러 예제가 있는데, AI한테 물어보니 간단한 방법을 알려줬다. import org.apache.commons.io.FileUtils;public class CopyDirectoryCommonsIO { public static void main(String[] args) throws IOException { Path source = Paths.get("C:/source/folder"); Path target = Paths.get("C:/target/folder"); FileUtils.copyDirectory(source.toFile(), target.toFile()); System.out.println("폴더 복사 완료"); .. 2024. 11. 13.
JavaFX와 Mybatis 연동하기 - Maven 위와 같이 프로젝트가 구성되있다고 할 때, pom.xml에 mybatis와 database driver를 설치해줍니다. 1. pom.xml (Maven기준) 4.0.0 org.example abc 1.0-SNAPSHOT javafx03_mybatis UTF-8 5.10.0 org.openjfx javafx-controls 17.0.6 org.openjfx javafx-fxml 17.0.6 org.junit.jupiter .. 2024. 9. 11.
Java Mybatis설정에서 MS-SQL연결 설정방법 :;databaseName=;encrypt=true;trustServerCertificate=true;"/>  encrypt=true;trustServerCertificate=true;이 구문을 넣어줘야한다. 2024. 9. 5.