node-java npm 모듈

2021. 10. 1. 16:39Node.js

728x90
반응형

자바 용어 정리

  • 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다.

사용할 npm 모듈

java

코드 테스트 시나리오

  • Eclipse로 Java project를 진행한 후 gradle 방식으로 프로젝트 구성

[SpringBoot]1장 Spring Boot + Gradle with Eclipse

  • 자바 버전 확인 후 프로젝트 구성하기

Spring boot 프로젝트 설정

  • Spring boot 2.3.2.RELEASE
  • 자바 1.8
  • gradle version 3
  • lombok 설치
  • 프로젝트 구성

node 프로젝트

프로젝트 만들기 전 유의사항

자바 버전 : 1.8 (openjdk-7-jre가 아닌 openjdk-7-jdk 패키지가 필요함.)

cmd 관리자 권한으로 들어간 후 해당 프로젝트의 경로를 가서 설치해준다.

npm install -g node-gyp
npm install --global --production windows-build-tools 
npm update 
npm install java

yarn 으로 설치하는 방법

yarn global add node-gyp
yarn global add --production windows-build-tools 
yanr upgrade 
yarn add java

Spring Boot와 node 프로젝트의 방향성

세세한 목록은 계속 바뀔 예정입니다.

  1. npm i java 모듈에 대한 검증 테스트
```jsx
var java = require('java');
var javaLangSystem = java.import('java.lang.System');
javaLangSystem.out.printlnSync('Hello World');
```

검증 완료
  1. 단순한 Java project를 jar로 만든 후 node로 테스트 해보기
    • 문제1: Eclipse에서 jar파일로 단순히 변환을 하게 되면 mainfest가 특정되지 않는다.
    • Solution:
      Export → java → Runnable JAR file → Launch configuration에서 클래스 선택하면됨. → Export destination : simpletest\simple4.jar (browser 버튼 눌러서 내가 만들고 싶은 파일명적고 저장 누르면 됨
       
    •  
    • 문제 2: class 파일 이름이 제대로 안뜨는 문제 발생
    • var clazz = java.findClassSync(name); // TODO: change to Class.forName when classloader issue is resolved. ^ Error: Could not create class MyClass2 java.lang.NoClassDefFoundError: MyClass2 Caused by: java.lang.ClassNotFoundException: MyClass2 at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at Java.java.import (D:\boba-node-java-api-test2\node_modules\java\lib\nodeJavaBridge.js:227:20) at Object.<anonymous> (D:\boba-node-java-api-test2\javaJarModuleTest.js:4:26) at Module._compile (internal/modules/cjs/loader.js:776:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3) at Function.Module.runMain (internal/modules/cjs/loader.js:829:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
    • Solution:
    • ```markup
      java.classpath.push('D:\boba-node-java-api-test2\simple.jar');
    • java.classpath.push('D:\boba-node-java-api-test2\simple.jar');
    • 검증 완료
    • Java 코드
    • public class MyClass { public static void main(String[] args){ System.out.println("Now the output is redirected!"); } public static int addNumbers(int a, int b) { return a + b; } }
    • node.js 코드
    • var java = require('java'); java.classpath.push("."); java.classpath.push('D:\\boba-node-java-api-test2\\simple.jar'); var MyClass = java.import("MyClass");// 클래스 이름 var result = MyClass.addNumbersSync(1, 2);//메소드 이름에 sync 붙이기 console.log(result);
    • 주의 사항
      • 경로를 쓸때 \ 이거로 쓰기!
  2. 단순한 Spring Boot 프로젝트를 jar로 만든 후 node로 테스트 해보기
    • 문제1 :Spring Boot 프로젝트가 jar file로 안만들어짐
    • solution :계속 Build가 실패했던 이유는 gradle build 로 사용해서....
      eclipse..... 자료가 거지같다.... 인텔리제이로 할걸....
    •  
728x90
반응형

'Node.js' 카테고리의 다른 글

Cocktail-mbti 개발기- (2)  (0) 2021.10.21
Cocktail-mbti 개발기- (1)  (0) 2021.10.06