전자정부프레임워크 공통컴포넌트를 설치하는 중 아래와 같은 에러 화면이 떳다.

DB 테이블과 데이터를 입력하여야 하는데 이클립스에 DB에 대한 정보가 없다는 것이다.




전자정부프레임워크에는 탐색기영역에 기본으로 Data Source Explorer 탭이 있다.

없는 경우는 아래와 같이 설정하면 된다.



Database Connection 항목을 우클릭 하여 New를 클릭한다.






처음 해당 화면으로 오면 드라이버 리스트도 비어있고 아래 항목에 입력을 할 수가 없다

드라이버가 없기 때문이다.

드라이버스 콤보박스 옆의 추가 버튼을 클릭한다.



오라클드라이버를 선택하면 아래와 같은 에러 문구가 뜬다.

이클립스에 오라클 접속 드라이버가 없기 때문이다.

오라클은 상용프로그램이므로 드라이버를 이클립스가 제공할 수 없기 때문일 것이다.


JAR List 탭을 클릭하여 해당 드라이버 jAR파일을 설정하면 된다.

주의할것은 첫번째 화면에서 Oracle Thin Driver를 아무거나 클릭하고 이동하여야 한다.

제일 위에 있는 10버전을 클릭하고 이동한다.



우선 젤위에 OJDBC4.jar를 선택해서 삭제한다.

이후 ADD JAR버튼을 클릭하여 파일을 찾아 선택한다.



위와같이 이상없이 하나의 JAR파일이 선택되었을때 OK버튼이 활성화 된다.


이후 오라클 계정 정보를 입력하고 테스트 접속해보면 접속이 된다.






전자 정부 프레임 워크 학습중

통합예제 소스를 돌려보는데

엑셀다운로드에서 다음과 같이 페이지 없음이 뜬다.

/**

* excel로 변환될 페이지를 제공한다.

*/

@RequestMapping("/gds/excelDownload.do")

public ModelAndView excelDownload(@ModelAttribute("searchVO") SearchVO searchVO) throws Exception {


List<GoodsVO> goodsList = egovGoodsService.selectGoodsXml();


Map<String, Object> map = new HashMap<String, Object>();

map.put("goodsList", goodsList);


return new ModelAndView("goodsExcelView", map);

}


원인은 

dispatcher-servlet.xml 에 

BeanNameViewResolver 설정이 없어서 그렇다.


bean을 서블릿 뷰단으로 표시해주는 설정이다.


<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">

<property name="order" value="0" />

</bean>


dispatcher-servlet.xml 에  위소스를 추가하면 엑셀 다운로드가 가능하다.


참고로 위 return new ModelAndView("goodsExcelView", map); 에서

BeanNameViewResolver 설정이 없다면 goodsExcelView.jsp파일을 찾아서 뷰로 표시할려고 한다.

따라서 해당 jsp가 없기때문에 페이지 없음 표시가 나는것이다.




스프링에 태랜젹션 적용을 위해서

서블릿 설정파일에

<!-- transaction 설정 -->

<beans:bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

  <beans:property name="dataSource" ref="dataSource"/>

</beans:bean>


<tx:advice id="txAdvice" transaction-manager="txManager">

<tx:attributes>

<tx:method name="*" rollback-for="Exception"/>

</tx:attributes>

</tx:advice>


<aop:config>

<aop:pointcut id="requiredTx" expression="execution(* com.javalec.spring_mybatis.dao..*Dao.*(..)) or execution(* com.javalec.spring_mybatis..*Dao.*(..))"/>

<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />

</aop:config>


설정과

pom.xml에

AOP 설정


<!-- AspectJ -->

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjrt</artifactId>

<version>${org.aspectj-version}</version>

</dependency>


을 하고 서버를 기동하니 아래와 같은 에러가 발생했다.



org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mvcContentNegotiationManager': BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException



에러 내용을 보니 결국 org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException  파일이 없다는 것이다.


뭐지 한참을 삽질을 하다가

AOP 메이블 설정을 잘못한 것이다.


위 설정이 아닌 아래 설정을 해야 하는데 실수한 것이다.



<!-- AspectJ Weaver -->

<dependency>

    <groupId>org.aspectj</groupId>

    <artifactId>aspectjweaver</artifactId>

    <version>${org.aspectj-version}</version>

</dependency>

로 설정을 해야 한다.


weaver가 AOP에서 advice를 핵심기능에 적용하는 설정 파일이라고 합니다.


톰캣 실행 시 java.util.zip.ZipException: invalid CEN header (bad signature) 와 같은 에러가 났다.


mybatis관련 디펜던시를 추가하고 서버 구동을 하니 에러가 발생했다.


메이븐 설정에 따라 가져오는 jar 파일에 오류가 발생하여 생기는 문제이다.


메이븐 기본 depository로 가서 해당 버전 폴더를 삭제 후


메이븐에서 프로젝트 업데이트를 실행하면 정상적인 파일이 다운로드 될 것이다.



에러내용




Window > Preferences > Maven > User Settings

에 가면 자신의 메이븐 디파지토리를 알 수 있다.

해당 Url 을 복사해서 탐색기에 붙여넣기 하면 쉽게 이동 할 수 있다.


위 오류 메세지와 pom.xml에 설정된 오류 jar를 알아서 찾는다.



메이븐 디파지토리로 이동하여 해당 버전 폴더를 삭제한다.



이후 프로젝트 우클릭 > 메이븐 > Update Project 를 클릭하면 정상적인 jar 파일이 다운로드 된다.


이후 톰캣을 재 실행하면 정상적으로 기동되는 것을 확인 할 수 있다.


단 인터넷 메이븐 디파지토리에서 다운로드 받을 수 없는 경우는 


로컬 디퍼지토리에 다시 메이븐 인스톨 해주면 된다.


로컬에 인스톨 하는 법은 아래 포스트를 참고한다.


스프링 메이븐 오라클 jdbc 드라이버 pom.xml에 dependency 설정


pom.xml 에 디펜던시로


<dependency>

   <groupId>com.oracle</groupId>

   <artifactId>ojdbc8</artifactId>

   <version>12.1</version>

</dependency>

아무리 설정해도 에러가 난다.


물론 소스를 실행해도 다음과 같은 에러가 날것이다.

Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'


메이븐에서 오라클 jdbc 드라이버를 찾지 못하는 것이다.

저작권 문제로 오라클 제품을 마음대로 배포하지 못하는 모양이다.


어떤 URL을 이용하는 repository 설정으로도 안되는게 원칙인거다.

근데 오라클에서는 제공을 안하고 있는지 모르겠다.


아무튼 오라클 사이트에서 직접 드라이버를 다운로드 받아서

메이븐을 이용해서 메이븐 로컬 레포지토리에 인스톨을 하고

인스톨된 버전으로 pom.xml에 디펜던시 설정을 해야 한다.


정리하면

1. 오라클 홈페이지에서 jdbc드라이버를 다운로드 받는다.

2. 메이븐 인스톨러를 이용해서 메이븐 레포지토리에 설치한다.

3. pom.xml에 디펜던시를 설정한다.


그럼 하나씩 해보자


1. 오라클 홈페이지에 접속해서 jdbc 드라이버를 다운로드 받는다. 


https://www.oracle.com

오랜만에 접속했더니 사이트가 많이 바꼇다. 메뉴로 찾아가기 힘드니 검색창에 JDBC를 입력해서 서칭한다.

최신버전을 받으시거나 자기에게 필요한 버전을 받는다.


2. 메이븐으로 인스톨 하여 로컬 메이븐 레포지토리에 설치한다.


mvn install:install-file -Dfile="파일이름(위치까지)" -DgroupId=그룹아이디 -DartifactId=파일이름 -Dversion=버전 -Dpackaging=jar

위에명령을 cmd에서 실행한다.

자기버전에 맞게 해당항목을 변경한다음 실행한다.

mvn install:install-file -Dfile="ojdbc8.jar" -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1 -Dpackaging=jar



메이븐이 설치되지 않았다면 에러가 발생할 것이다.

메이븐을 다운받아 압축을 푼다음 bin 디렉토리로 이동하여 명령을 실행하면 된다.


https://maven.apache.org/download.cgi 에 접속하여 ~~~~-bin.zip 버전을 받아 압축을 풀고 해당 디렉토리의 bin 폴더로 이동한다.



인스톨 명령을 실행하면 메이븐 depository에 해당 드라이버가 설치된다.

위에서는 C:\Users\webnbiz01\.m2\repository\com\oracle\ojdbc8\12.1 에 설치된 것이다.

해당 디렉토리로 이동하면 jar 파일과 pom 파일이 있다.

pom파일의 groupId, artifactId, version을 pom.xml에 디팬던시로 설정하면 된다.


3. pom.xml에 디펜던시를 설정한다.


<dependency>

   <groupId>com.oracle</groupId>

   <artifactId>ojdbc8</artifactId>

   <version>12.1</version>

</dependency>


pom.xml에 추가한다.


이후 서버 재시작후 실행하면 DB에 연결되는것을 확인 할 수 있다.




요근래 프로젝트는 git을 이용한 형상관리가 이루어 지고 있는 추세..

우선 이클립스 프로젝트와 github의 연결 설정을 해보자


이클립스는 전자정부 3.6버전을 받아 수행한다.

프로젝트 생성 및 여러 설정들이 잘 되어 있으므로....


전자정부프레임워크를 설치했다면

우선 이클릭스에 git 정보를 입력해야 한다.


 

메뉴의 Window > Perspective > Open Perspective > Other > Git 또는 오른쪽 상단의 폴더모양클릭 후 Git 선택





오른쪽 상단에 GIT 탭 클릭 후

좌측 영역의 Clone a Git repository 클릭


깃허브의 해당 프로젝트 경로를 입력 

로그인 정보도 입력 후 다음


깃허브의 해당 프로젝트가 비어 있으므로 위와 같은 경고문 출력 다음 클릭


로컬 깃 저장소 정보 설정

workspace에 저장되던 소스가 해당 폴더로 이동하게 된다.

형상관리시 로컬저장소에 커밋을 하고

로컬저장소의 소스를 원격저장소인 깃허브에 푸쉬하게 된다.

깃 레포지토리 정보가 추가된것을 확인


새로운 프로젝트 생성



전자정부의 샘플 코드 같이 생성

배포시 소스 확인 위해서..



프로젝트가 생성됐으면 해당 프로젝트 오륵쪽 클릭하여

Team > Share Project 클릭



Git 선택



Repository 선택에서 위에 설정된 로컬 레포지토리 선택



배포를 위해서 Team > Commit  이나 싱크를 클릭



커밋에 대한 코멘트를 달아주고 

모든 파일 선택 후 Commit and Push 클릭

다시한번

Commit 은 로컬 저장소에 파일을 올리는것

push는 원격 저장소에 파일을 올리는 것



첫번째 커밋이므로 마스터 브랜치에 등록할것인지 확인



커밋엔 푸쉬가 완료돼었다는 안내



깃 허브 사이트 가서 해당하는 프로젝트에 소스가 올라왔는지 확인






1. pom.xml 디펜던시 추가

    <dependency>

        <groupId>org.jasypt</groupId>

        <artifactId>jasypt-spring3</artifactId>

        <version>1.9.2</version>

    </dependency>


2. 암호화 클래스 파일 만들어서 암호화된 문자 보기



package encrypt;


import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;


public class Encrypt {

public static void main(String[] args) {

   StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();

   pbeEnc.setAlgorithm("PBEWithMD5AndDES");

   pbeEnc.setPassword("jasyptPass");

   String title = pbeEnc.encrypt("hello world title");

   System.out.println(" title = " + title);

   System.out.println(" title = " + pbeEnc.decrypt(title));

}

}

hello world title 

이 암호화할 단어

3. properties 파일 저장
hello.title=ENC(ldtcJv+14/xmF3RGs+3xzTlCRKZuaKzQe+vRrj92umI=)

위에서 출력된 값으로 properties 항목에 값을 설정 
ENC로 묶어주어야 주입될때 복호화가 되어서 들어감에 주의

4. 콘텍스트 xml 편집

    <bean id="environmentVariablesConfiguration"
      class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
        <property name="algorithm" value="PBEWithMD5AndDES" />
        <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
    </bean>
  
    <bean id="configurationEncryptor"
      class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
        <property name="config" ref="environmentVariablesConfiguration" />
        <property name="password" value="jasyptPass" />
    </bean>
    
    <bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
        <constructor-arg ref="configurationEncryptor" />
        <property name="locations">
            <list>
                <value>classpath:/props/helloWorld.properties</value>
            </list>
        </property>
    </bean>
<bean id="helloworld" name="helloworldname" class="egovframework.guide.helloworld.HelloWorldServiceImpl" >
<property name="name"><value>egov2 framework</value></property>
<property name="title"><value>${hello.title}</value></property>
</bean>

HelloWorldServiceImpl 클래스에 
name과 title 이 주입되는데 
name은 직접입력된 값
title은 properties에서 가져온 값이면서 암호화된것을 복호화 하면서 넣음.



1. pom.xml 설정

2. context.xml 설정

3. 사용자단 소스

4. 자바단 소스


1. pom.xml 설정


<!--  file upload -->

<dependency>

 <groupId>commons-fileupload</groupId>

 <artifactId>commons-fileupload</artifactId>

 <version>1.2</version>

</dependency>

<dependency>

 <groupId>commons-io</groupId>

 <artifactId>commons-io</artifactId>

 <version>2.4</version>

</dependency>


2. context.xml 설정


<!-- MULTIPART RESOLVERS -->

<!-- regular spring resolver -->

<bean id="spring.RegularCommonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

 <property name="maxUploadSize" value="600000000" />

 <property name="maxInMemorySize" value="100000000" />

</bean>



3. 사용자단 소스


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>

<html>

 <head> 

  <meta name="title" content="Amway Academy">

  <meta name="keywords" content="Amway Academy">

  <meta name="description" content="">

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <meta http-equiv="X-UA-Compatible" content="IE=Edge">  

 

  <title>Amway Academy 관리자</title>

  <script type="text/javascript" src="/js/jquery-1.10.2.min.js"></script>

  <script type="text/javascript" src="/js/jquery.form.js"></script>

  <script type="text/javascript">

  $(document.body).ready(function(){

   $("#insertBtn").on("click", function(){

    imageSubmit();

   });

  });

  

  var imageSubmit = function(){

   // 저장전 Validation


   

   if($("#courseimagefile").val().length<1 && $("#courseimage").val().length<1){

    alert("대표이미지를 등록해 주세요.");

    return;

   }


   var fileYn = false;

   $( "input:file" ).each(function( index ){

    if($( this ).val().length>0 ){

     fileYn = true;

    }

   });

   if(!fileYn){

    saveSubmit();

    return;

   }

   $("#frm").ajaxForm({

    dataType:"json",

    data:{mode:"course"},

    url:'/common/fileUploadAjax.do',

    beforeSubmit:function(data, form, option){

     return true;

    },

          success: function(result, textStatus){

           for(i=0; i<result.length;i++){

            $("#"+result[i].fieldName+"file").val(result[i].FileSavedName);

            if(result[i].fieldName == "filedown"){

             $("#"+result[i].fieldName+"file").val( result[i].OriginalFilename + "|" + result[i].FileSavedName );

            }

           }

           saveSubmit();

          },

          error: function(){

              alert("파일업로드 중 오류가 발생하였습니다.");

              return;

          }

   }).submit();

  }

  var saveSubmit = function(){

   alert("저장")

  }

  

  

  /** 이미지 미리보기

   * 

   */

  function getThumbnailPrivew(html, $target, w, h) {

   if(html.value == ""){

    return;

   }

   var _lastDot = html.value.lastIndexOf('.');

   var fileExt = html.value.substring(_lastDot+1, html.value.length).toLowerCase();

   /* 

   if( fileExt != "jpg" && fileExt != "gif" && fileExt != "png" ) {

    alert("이미지 파일(jpg,gif,png)만 입력하세요.");

    try{$(html).replaceWith($(html).clone(true))}catch(e){};

    try{html.value = ""}catch(e){};

    return;

   }

      */

   if (html.files && html.files[0]) {

          var reader = new FileReader();

          reader.onload = function (e) {

              $target.css('display', '');

              var wStr = "";

              var hStr = "";

              if(w !='' && w != null ){

               wStr = "width="+w;

              }

              if(h !='' && h != null ){

               hStr = "height="+h;

              }

              $target.html('<img src="' + e.target.result + '" border="0" alt="" '+wStr+' '+hStr+' />');

          }

          reader.readAsDataURL(html.files[0]);

      }

  }

  

  </script>

 </head>

 <body>

 <form id="frm" name="frm" method="post">

  <table>

   <tr>

    <th rowspan="3">대표이미지</th>

    <td rowspan="2">

     <div id="courseimageView" style="width:140px;height:80px;float:left;" class="required">

     <c:if test="${not empty detail.courseimage}"><img src="/manager/lms/common/imageView.do?file=${detail.courseimage}&mode=course" width="120" style="max-height:80px;"></c:if>

     </div>

    </td>

    <td>

     <input type="hidden" id="courseimagefile" name="courseimagefile" value="${detail.courseimage}" title="대표이미지" />

     <input type="file" id="courseimage" name="courseimage" onchange="getThumbnailPrivew(this,$('#courseimageView'), 120 , 80);" title="대표이미지"><br />

    </td>

   </tr>

  </table>

  <a href="javascript:;" id="insertBtn" class="btn_green">저장</a>

 </form>

 </body>

</html>

  



4. 자바단 소스


 @RequestMapping(value = "/common/fileUploadAjax.do", method = RequestMethod.POST)

    public ModelAndView fileUploadAjax(MultipartHttpServletRequest request, ModelAndView mav ) throws Exception {

  Map<String, Object> rtnMap = new HashMap<String, Object>();


  String mode = request.getParameter("mode");

  String name = request.getParameter("name");

  String childFolder = "temp";

  if("stamp".equals(mode)){

   childFolder = "stamp";

  }else if("course".equals(mode)){

   childFolder = "course";

  }else if("test".equals(mode)){

   childFolder = "test";

  }else if("excel".equals(mode)){

   childFolder = "excel";

  }

  

  //folder mkdir

  File saveFolder = new File(ROOT_UPLOAD_DIR+File.separator+childFolder);

  if(!saveFolder.exists() || saveFolder.isFile()){

   saveFolder.mkdirs();

  }

  

  //iterator

  Iterator<String> files = request.getFileNames();

  MultipartFile multipartFile;

  String filePath;

  List<Map<String, Object>> fileInfoList = new ArrayList<Map<String,Object>>();

  

  try{

   

   //while

   while(files.hasNext()){   

    

    

    String uuid = UUID.randomUUID().toString().replaceAll("-", "");

    multipartFile = request.getFile((String)files.next());

    String fieldName = multipartFile.getName();

    String extName = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".")+1 );

    String filename = uuid+"."+extName;

    filePath = ROOT_UPLOAD_DIR+File.separator+childFolder+File.separator+filename;

    if( filename != null && !"".equals(multipartFile.getOriginalFilename()) ){

     multipartFile.transferTo(new File(filePath));


     

     

     Map<String, Object> map = new HashMap<String, Object>();

     map.put("fieldName", fieldName);

     map.put("FilePath", filePath);

     map.put("OriginalFilename", multipartFile.getOriginalFilename());

     map.put("extName", extName);

     map.put("FileSize", multipartFile.getSize());

     map.put("FileSavedName", filename);

     fileInfoList.add(map);

    }

   }

   

  }catch(IOException e){

   e.printStackTrace();

  }

  

  

  int sizeCheck = 0;

  if(fileInfoList != null && fileInfoList.size() > sizeCheck){

   rtnMap = fileInfoList.get(0);

  }

  mav.setView(new JSONView());

  mav.addObject("JSON_OBJECT",  fileInfoList);

  return mav;

    }



핵심은 jquery.form.js 를 이용해서 비동기로 파일을 업로드 한다

파일을 업로드 하기 위해서는 common-fileupload 와 common-io 자르가 필요하다.

multipartResolver를 선언해 주고

비동기로 파일을 업로드 한다.

The project description file (.project) for 'academy' is missing.  This file contains important information about the project.  The project will not function properly until this file is restored.


SI 프로젝트를 나가면 개발자가 들어올때마다 이클립스 셋팅하는데 시간이 꽤 걸리므로

셋팅된 이클립스를 배포하는 경우가 많다.


보통 D드라이브가 없는 친구들이 많기 때문에 기본적으로 C드라이브를 기본으로 해서

이클립스, 워크스페이스, 자바, 톰캣, 메이븐디포짓, 깃폴더 등을 한곳에 때려넣어서 배포를 하는데


구지 꼭 C가 아닌 다른곳에 설치하는 친구들이 있다..


이런 경우가 아니더라도 프로젝트가 끝난 후 유지보수를 위해서 소스를 한곳에 모아 놓는 경우

샛팅을 바꿔줘야 하는 몇가지가 있다.


1. eclipse.ini 의 자바경로 변경

이클립스 폴더에 있는 eclipse.ini의 자바 경로 부분을 변경한다.


-vm

D:/eclipse/Project/Java/jdk1.7.0_80/bin/javaw.exe


2. 이클립스 실행 후 

파일>워크스페이스 변경을 하여 변경하고자 하는 곳으로 변경



3. git 폴더 변경

윈도우 > Preferences > Team > Git 에서 기본 폴더 변경


Git Repositories를 클릭하여

Add an existing local Git repository 를 설정


4. maven 셋팅정보 수정

메이븐 설정파일인 settings.xml의 localRepository 위치 수정

윈도우 > preferences> Maven> User Settings

수정한 settings.xml 파일을 일고 update settings 를 클릭하여 반영



5. 서버설정

윈도우 > preferences> Server> Runtime Environments 

수정을 클릭하여 서버 위치 변경 및 JRE 버전 설정



그런데도 프로젝트가 읽어오질 못한다.

.project 파일을 못찾는단다.

워크스페이스 변경만으로 각 개별 프로젝트의 위치가 자동으로 바뀌는게 아닌것이다.






프로젝트의 속성을 보면 소스 위치가 기존의 폴더로 되어있다.


이건 처음 셋팅시 소스 위치를 워크스페이스 밖으로 설정해서 그런것이다.


해결 방법은 

방법 1. 프로젝트를 삭제하고 git에서 임포트 한다.

방법 2. workspace\.metadata\.plugins\org.eclipse.core.resources\.projects\프로젝트명 폴더에

.lcation 파일의 프로젝트 위치를 편집한다.







Java was started but returned exit code=13 - 이클립스 실행시 에러



아주 오래된 프로젝트를 변경할 일이 있어 고이고이 간직됐던 프로젝트를 카피해서 실행하는데 에러

해당 이클립스에 맞는 자바를 찾지 못해서 발생하는 에러입니다.


이클립스는 32비트이고 내PC는 64비트인지라..

그래서 32비트용 자바 JDK를 다운받습니다.

기본 폴더에 설치한다면 실행될겁니다.


특정 폴더에 설치하셨다면 이클립스 폴더의 eclipse.ini 파일을 문서 편집기로 

해당 폴더를 설정해 주면 됩니다.

OpenFile 밑에 아래를 추가합니다.


-vm 

D:\eclipse\java\86\jdk1.8.0_131\bin\javaw.exe

붉은색 부분은 설치된 각자의 폴더에 맞게 넣어주면 됩니다.




+ Recent posts