데비안 9.9 에서 이클립스와 openjdk 1.8 궁합이 살짝 아쉽네요.
글쓴이: emptynote / 작성시간: 금, 2019/05/03 - 10:54오전
저는 자바 개발자라 이클립스라는 IDE 를 껴 안고 삽니다.
데비안에서도 이클립스 설치하여 구동할 수 있는데
데비아 9.9 버전에서는 자바8인 openjdk 1.8 이 기본인 반면
이클립스는 jdk 1.7까지만 지원하는 3.8.1 버전이네요.
문제는 제가 JDK 1.8 문법인 람다를 도입해서 에러가 쭉 나온다는 것입니다.
코드 깔끔한것은 둘째치고 jdbc connection 이라는 자원 반환을 확실하게 보장하기 위해서
성능 오버헤드가 있음에도 불구하고 JDK 1.8 문법인 람다를 도입했는데 망했네요.
"개발 환경으로써 리눅스를 활용하고 있으며 좋아요" 이 한마디 하려고
개인 프로젝트 개발 환경을 debian 에서도 쉽게 구축할 수 있도록 howto 문서 작성중인데 세상사 뜻대로 안되네요.
윈도 모니터보다 리눅스 모니터가 더 커서 리눅스에서 개발을 하다가
윈도10 PC를 구입하면서 같이산 모니터가 더 커서 지금은 윈도10에서 주로 개발중인데
윈도10에서는 최신 버전으로 다운로드 받아 사용하다 보니 이런 사태가 왔네요.
서버 비지니스 로직을 다룰때 jooq 가 핵심 라이브러리이고 jooq 는 JDK 1.8 이상을 요구하기에 JDK 1.7 로 돌아갈 수 없기에 답답하네요.
어떤 분 말만 따라 ㅋㅋㅋ 날리며 개발 환경으로써 리눅스 활용하지 말고 주변 사람한테 추천도 하지 마세요 라고 말해야 할까요.
저는 좀 삐딱해서 그리는 못하겠네요.
Forums:


이클립스때문에 울고 싶네요.
이클립스(Neon.1a Release 4.6.1) 를 다운 받아 데비아 9.9 에서 사용중인데요.
수동으로 이클립스 환경을 제가 맞춘것과 동일하게 할려면 매우 번거롭기때문에
자동화 지원할 목적으로 eclipse 에서 import 한방으로 동일하게 맞추게 하고자
윈도 10 에 있는 workbench 에 있는 .project 와 .classpath 파일을 데비안으로 옮겨 오기 위해서
경로 다른것을 맞추어줄 프로그램까지 작성해서 옮겨 왔는데
JDK 라이브러리가 java 5 이하로 판단하여 junit 애노테이션에 에러를 발생시키네요.
ant install 로 설치할 수 있는 이클립스는 jdk 1.7 까지 지원하는 이클립스이고
그래서 수동으로 이클립스 최신 버전 다운 받아 사용하려고 노력~~~~~~을 했지만
결국은 import 한방 처리후에도 수동 작업이 필요한 상황이네요.
울고 싶네요 ㅠ.ㅠ
성공했습니다. ^^
이제 import 한방으로 가능합니다.
.settings 경로에 org.eclipse.jdt.core.prefs 파일을 추가했더니 잘 되네요.
아래 프로그램을 고생하여 작성한 보람이 있어 기쁘네요 ^^
package kr.pe.codda.common.buildsystem; import java.io.File; import io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory; import kr.pe.codda.common.buildsystem.pathsupporter.CommonBuildSytemPathSupporter; import kr.pe.codda.common.etc.CommonStaticFinalVars; import kr.pe.codda.common.exception.BuildSystemException; import kr.pe.codda.common.util.CommonStaticUtil; public class EclipseBuilder { private InternalLogger log = InternalLoggerFactory.getInstance(EclipseBuilder.class); private String installedPathString = null; public EclipseBuilder(String installedPathString) throws BuildSystemException { if (null == installedPathString) { throw new IllegalArgumentException("the parameter installedPathString is null"); } checkValidPath("the installed path", installedPathString); this.installedPathString = installedPathString; } private void checkValidPath(String title, String targetPathString) throws BuildSystemException { File targetPath = new File(targetPathString); if (!targetPath.exists()) { String errorMessage = new StringBuilder(title).append("[").append(targetPathString) .append("] does not exist").toString(); throw new BuildSystemException(errorMessage); } if (!targetPath.isDirectory()) { String errorMessage = new StringBuilder(title).append("[").append(targetPathString) .append("] isn't a directory").toString(); throw new BuildSystemException(errorMessage); } } private void createCoddaAllEclipeProjectXMLFile(String eclipseProjectName, EclipsePath[] eclipsePathList) throws BuildSystemException { String commonResourcesPathString = CommonBuildSytemPathSupporter .getCommonResourcesPathString(installedPathString); String coddaCoreAllEclipeProjectXMLFilePathString = new StringBuilder().append(commonResourcesPathString) .append(File.separator).append("eclipse").append(File.separator).append("workbench") .append(File.separator).append(eclipseProjectName).append(File.separator).append(".project").toString(); // log.info("coddaCoreAllEclipeProjectXMLFilePathString=[{}]", coddaCoreAllEclipeProjectXMLFilePathString); File coddaCoreAllEclipeProjectXMLFile = new File(coddaCoreAllEclipeProjectXMLFilePathString); StringBuilder coddaCoreAllEclipeProjectXMLFileContentsStringBuilder = new StringBuilder() .append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(CommonStaticFinalVars.NEWLINE) .append("<projectDescription>").append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<name>") .append(eclipseProjectName) .append("</name>") .append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<comment></comment>").append(CommonStaticFinalVars.NEWLINE).append(" ").append("<projects>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("</projects>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("<buildSpec>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("<buildCommand>") .append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<name>org.eclipse.jdt.core.javabuilder</name>").append(CommonStaticFinalVars.NEWLINE) .append(" ").append("<arguments>").append(CommonStaticFinalVars.NEWLINE).append(" ") .append("</arguments>").append(CommonStaticFinalVars.NEWLINE).append(" ").append("</buildCommand>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("</buildSpec>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("<natures>") .append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<nature>org.eclipse.jdt.core.javanature</nature>").append(CommonStaticFinalVars.NEWLINE) .append(" ").append("</natures>").append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<linkedResources>"); String installedPathStringForEclipseRelativePath = installedPathString.replaceAll("\\\\", "/"); for (EclipsePath eclipsePath : eclipsePathList) { coddaCoreAllEclipeProjectXMLFileContentsStringBuilder.append(CommonStaticFinalVars.NEWLINE) .append(" ").append("<link>").append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<name>").append(eclipsePath.getPathName()).append("</name>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("<type>2</type>") .append(CommonStaticFinalVars.NEWLINE).append(" ").append("<location>") .append(installedPathStringForEclipseRelativePath).append("/").append(eclipsePath.getRelativePath()) .append("</location>").append(CommonStaticFinalVars.NEWLINE).append(" ").append("</link>"); } coddaCoreAllEclipeProjectXMLFileContentsStringBuilder.append(CommonStaticFinalVars.NEWLINE).append(" ") .append("</linkedResources>").append(CommonStaticFinalVars.NEWLINE).append("</projectDescription>"); String coddaCoreAllEclipeProjectXMLFileContents = coddaCoreAllEclipeProjectXMLFileContentsStringBuilder .toString(); // log.info("coddaCoreAllEclipeProjectXMLFileContents=[{}]", coddaCoreAllEclipeProjectXMLFileContents); try { CommonStaticUtil.saveFile(coddaCoreAllEclipeProjectXMLFile, coddaCoreAllEclipeProjectXMLFileContents, CommonStaticFinalVars.SOURCE_FILE_CHARSET); } catch (Exception e) { String errorMessage = new StringBuilder() .append("fail to create the eclise .project file[") .append(coddaCoreAllEclipeProjectXMLFilePathString) .append("] becase io error occured").toString(); log.warn(errorMessage, e); throw new BuildSystemException(errorMessage); } } private void createCoddaAllEclipeClasspathXMLFile(String eclipseProjectName, EclipsePath[] eclipsePathList, String[] eclipseLibiaryRelativePathStringList) throws BuildSystemException { String commonResourcesPathString = CommonBuildSytemPathSupporter .getCommonResourcesPathString(installedPathString); String coddaCoreAllEclipeClasspathXMLFilePathString = new StringBuilder().append(commonResourcesPathString) .append(File.separator).append("eclipse").append(File.separator).append("workbench") .append(File.separator).append(eclipseProjectName).append(File.separator).append(".classpath") .toString(); // log.info("coddaCoreAllEclipeClasspathXMLFilePathString=[{}]", coddaCoreAllEclipeClasspathXMLFilePathString); File coddaCoreAllEclipeClasspathXMLFile = new File(coddaCoreAllEclipeClasspathXMLFilePathString); StringBuilder coddaCoreAllEclipeClasspathXMLFileContentsStringBuilder = new StringBuilder() .append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(CommonStaticFinalVars.NEWLINE) .append("<classpath>").append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<classpathentry kind=\"con\" path=\"org.eclipse.jdt.junit.JUNIT_CONTAINER/4\"/>") .append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER\"/>") .append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<classpathentry kind=\"output\" path=\"bin\"/>"); for (EclipsePath eclipsePath : eclipsePathList) { coddaCoreAllEclipeClasspathXMLFileContentsStringBuilder.append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<classpathentry kind=\"src\" path=\"").append(eclipsePath.getPathName()).append("\"/>"); } String installedPathStringForEclipseRelativePath = installedPathString.replaceAll("\\\\", "/"); for (String eclipseLibiaryRelativePathString : eclipseLibiaryRelativePathStringList) { coddaCoreAllEclipeClasspathXMLFileContentsStringBuilder.append(CommonStaticFinalVars.NEWLINE).append(" ") .append("<classpathentry kind=\"lib\" path=\"").append(installedPathStringForEclipseRelativePath) .append("/").append(eclipseLibiaryRelativePathString).append("\"/>"); } coddaCoreAllEclipeClasspathXMLFileContentsStringBuilder.append(CommonStaticFinalVars.NEWLINE) .append("</classpath>"); String coddaCoreAllEclipeClasspathXMLFileContentsString = coddaCoreAllEclipeClasspathXMLFileContentsStringBuilder .toString(); // log.info("coddaCoreAllEclipeClasspathXMLFileContentsString=[{}]", coddaCoreAllEclipeClasspathXMLFileContentsString); try { CommonStaticUtil.saveFile(coddaCoreAllEclipeClasspathXMLFile, coddaCoreAllEclipeClasspathXMLFileContentsString, CommonStaticFinalVars.SOURCE_FILE_CHARSET); } catch (Exception e) { String errorMessage = new StringBuilder() .append("fail to create the eclise .classpath file[") .append(coddaCoreAllEclipeClasspathXMLFilePathString) .append("] becase io error occured").toString(); log.warn(errorMessage, e); throw new BuildSystemException(errorMessage); } } public void createCoddaCoreAllEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_core_all"; EclipsePath[] eclipsePathList = { new EclipsePath("core_common_main_src", "core/common/src/main/java"), new EclipsePath("core_common_test_src", "core/common/src/test/java"), new EclipsePath("core_client_main_src", "core/client/src/main/java"), new EclipsePath("core_server_main_src", "core/server/src/main/java"), new EclipsePath("core_all_test_src", "core/all/src/test/java") }; String[] eclipseLibiaryRelativePathStringList = { "core/server/lib/main/ex/commons-dbcp2-2.0.1.jar", "core/server/lib/main/ex/commons-pool2-2.5.0.jar", "core/common/lib/test/commons-exec-1.3.jar", "core/common/lib/test/byte-buddy-1.7.9.jar", "core/common/lib/test/byte-buddy-agent-1.7.9.jar", "core/common/lib/test/mockito-core-2.13.4.jar", "core/common/lib/test/objenesis-2.6.jar", "core/logger/lib/ex/jcl-over-slf4j-1.7.25.jar", "core/logger/lib/ex/logback-classic-1.2.3.jar", "core/logger/lib/ex/logback-core-1.2.3.jar", "core/logger/lib/ex/slf4j-api-1.7.25.jar", "core/logger/dist/codda-logger.jar", "core/common/dist/codda-core-junitlib.jar" }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } public void createCoddaCoreLoggerEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_logger"; EclipsePath[] eclipsePathList = { new EclipsePath("main_src", "core/logger/src/main/java")}; String[] eclipseLibiaryRelativePathStringList = { "core/logger/lib/ex/commons-logging-1.2.jar", "core/logger/lib/ex/log4j-1.2.17.jar", "core/logger/lib/ex/log4j-api-2.11.0.jar", "core/logger/lib/ex/log4j-core-2.11.0.jar", "core/logger/lib/ex/logback-classic-1.2.3.jar", "core/logger/lib/ex/logback-core-1.2.3.jar", "core/logger/lib/ex/slf4j-api-1.7.25.jar" }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } public void createCoddaCoreHelperEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_helper"; EclipsePath[] eclipsePathList = { new EclipsePath("main_src", "core/helper/src/main/java"), new EclipsePath("test_src", "core/helper/src/test/java")}; String[] eclipseLibiaryRelativePathStringList = { "core/helper/lib/main/in/jgoodies-common.jar", "core/helper/lib/main/in/jgoodies-forms.jar", "core/common/lib/test/byte-buddy-1.7.9.jar", "core/common/lib/test/byte-buddy-agent-1.7.9.jar", "core/common/lib/test/commons-exec-1.3.jar", "core/common/lib/test/mockito-core-2.13.4.jar", "core/common/lib/test/objenesis-2.6.jar", "core/common/dist/codda-core-common.jar", "core/logger/lib/ex/jcl-over-slf4j-1.7.25.jar", "core/logger/lib/ex/logback-classic-1.2.3.jar", "core/logger/lib/ex/logback-core-1.2.3.jar", "core/logger/lib/ex/slf4j-api-1.7.25.jar", "core/helper/lib/main/in/commons-cli-1.4.jar", "core/helper/lib/test/codda-core-junitlib.jar", "core/helper/lib/main/in/commons-io-2.6.jar" }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } public void createCoddaSampleBaseServerEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_sample_base_server"; EclipsePath[] eclipsePathList = { new EclipsePath("main_src", "project/sample_base/server_build/src/main/java"), new EclipsePath("test_src", "project/sample_base/server_build/src/test/java")}; String[] eclipseLibiaryRelativePathStringList = { "project/sample_base/server_build/corelib/ex/commons-dbcp2-2.0.1.jar", "project/sample_base/server_build/corelib/ex/commons-pool2-2.5.0.jar", "project/sample_base/server_build/corelib/ex/jcl-over-slf4j-1.7.25.jar", "project/sample_base/server_build/corelib/ex/logback-classic-1.2.3.jar", "project/sample_base/server_build/corelib/ex/logback-core-1.2.3.jar", "project/sample_base/server_build/corelib/ex/slf4j-api-1.7.25.jar", "project/sample_base/server_build/lib/main/ex/jooq-3.10.6.jar", "project/sample_base/server_build/lib/main/ex/jooq-codegen-3.10.6.jar", "project/sample_base/server_build/lib/main/ex/jooq-meta-3.10.6.jar", "core/common/lib/test/byte-buddy-1.7.9.jar", "core/common/lib/test/byte-buddy-agent-1.7.9.jar", "core/common/lib/test/commons-exec-1.3.jar", "core/common/lib/test/mockito-core-2.13.4.jar", "core/common/lib/test/objenesis-2.6.jar", "util/jooq/mysql-connector-java-5.1.46.jar", "project/sample_base/server_build/corelib/in/codda-core-all.jar", "core/common/dist/codda-core-junitlib.jar", "project/sample_base/server_build/corelib/ex/gson-2.8.5.jar", "project/sample_base/server_build/lib/main/ex/oracle-mail-1.4.7.jar", }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } public void createCoddaSampleBaseAppClientEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_sample_base_appclient"; EclipsePath[] eclipsePathList = { new EclipsePath("main_src", "project/sample_base/client_build/app_build/src/main/java"), new EclipsePath("test_src", "project/sample_base/client_build/app_build/src/test/java")}; String[] eclipseLibiaryRelativePathStringList = { "project/sample_base/client_build/app_build/corelib/ex/gson-2.8.5.jar", "project/sample_base/client_build/app_build/corelib/ex/jcl-over-slf4j-1.7.25.jar", "project/sample_base/client_build/app_build/corelib/ex/logback-classic-1.2.3.jar", "project/sample_base/client_build/app_build/corelib/ex/logback-core-1.2.3.jar", "project/sample_base/client_build/app_build/corelib/ex/slf4j-api-1.7.25.jar", "project/sample_base/client_build/app_build/corelib/in/codda-core-all.jar", }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } public void createCoddaSampleBaseWebClientEclipeWorkbenchFiles() throws BuildSystemException { String eclipseProjectName = "codda_sample_base_webclient"; EclipsePath[] eclipsePathList = { new EclipsePath("main_src", "project/sample_base/client_build/web_build/src/main/java"), new EclipsePath("test_src", "project/sample_base/client_build/web_build/src/test/java")}; String[] eclipseLibiaryRelativePathStringList = { "project/sample_base/client_build/web_build/corelib/ex/gson-2.8.5.jar", "core/common/dist/codda-core-junitlib.jar", "core/common/lib/test/byte-buddy-1.7.9.jar", "core/common/lib/test/byte-buddy-agent-1.7.9.jar", "core/common/lib/test/commons-exec-1.3.jar", "core/common/lib/test/mockito-core-2.13.4.jar", "core/common/lib/test/objenesis-2.6.jar", "project/sample_base/client_build/web_build/corelib/ex/codda-core-all.jar", "project/sample_base/client_build/web_build/lib/main/ex/commons-fileupload-1.3.2.jar", "project/sample_base/client_build/web_build/lib/main/ex/commons-lang3-3.7.jar", "project/sample_base/client_build/web_build/lib/main/ex/commons-text-1.3.jar", "project/sample_base/client_build/web_build/lib/main/ex/commons-io-2.6.jar", "project/sample_base/client_build/web_build/lib/main/ex/simplecaptcha-1.2.1.jar", "project/sample_base/client_build/web_build/lib/test/httpcore-4.4.10.jar", "project/sample_base/client_build/web_build/lib/test/httpmime-4.5.6.jar", }; createCoddaAllEclipeProjectXMLFile(eclipseProjectName, eclipsePathList); createCoddaAllEclipeClasspathXMLFile(eclipseProjectName, eclipsePathList, eclipseLibiaryRelativePathStringList); } }