본문 바로가기

Programming320

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.
Winform material skin 적용하기 (VSCode) wpf처럼 테마 적용법을 찾아내고 싶었으나 잘 안된다. 대신 material skin을 적용하면 쉽게 화면 스타일을 바꿀 수 있다. 1. NugetPackageManager GUI 설치2. MaterialSkin 설치  - VSCode에서 Ctrl+Shift+P ->Nuget Package Manager GUI에서 materialskin 검색 3. Form1.cs 파일에 적용namespace winform_ex02;using System;using System.Text;using System.Xml;using MaterialSkin; //추가using MaterialSkin.Controls; //추가// public partial class Form1 : Formpublic partial class F.. 2025. 2. 5.
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.
Fetch 함수로 파일 다운로드 받기 특정 API에서 파일 다운로드를 제공할 때, 이를 받아들이는 Javascript 예제.파일명은 API의 Header에 'Content-Disposition' 값에서 가져온다. fetch('/api/download') .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } // Content-Disposition 헤더에서 파일명 추출 const contentDisposition = response.headers.get('Content-Disposition'); const filenameRegex = /filename="?([^"]+)"?/i; const mat.. 2024. 11. 12.