점심을 먹고, 하려보니 갑자기 안된당... 하하...

분명 잘 되던건데.. 딱히 뭔가 클래스를 바꾼게 없는데..

 

원인은 클래스가 컴파일에 참조가 안되서 생기는 에러라고 합데다.

 

해결 방법

 

Project > Properties > Java Build Path > Order and Export > JRE 라이브러리 사용여부 체크

jre 라이브러리 check > apply > 서버 clean 및 재기동

 

로컬로 테스트하던 잘 사용하던 중에 난 에러

 

 

 

Access to XMLHttpRequest at 'http://localhost:8080/SFSJ_API/api/001001000/getJsonFromIOExcel.do' from origin 'http://localhost:7080' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

 

라는 문제로 에러가 나는 이유는

 

웹 서버 개발시 자바스크립트로 외부서버의 경로로 ajax요청을 날리면서 실패할 때,

즉 서로 다른 도메인에서 자료를 가져 오면서 CORS(Cross Origin Resource Sharing) 라는 에러가 발생하였다.

 

해결방안은 여러가지가 있는데

 1.서버에서 설정하는 방법

 (이 방법에 대해서는 정확한 방법을 모르겠다..)

 

 2. 크롬에서 웹 시큐리티 막기

   - 크롬의 바로가기의 '속성 > 바로가기 > 대상' 에 "--disable-web-security --user-data-dir='폴더위치'" 삽입

 

 

   * --user-data-dir의 위치는 해당크롬에서 오류가 났을때, 백업내용? 오류내용?이 들어가는 위치라고 한다. 

   * 기존의 크롬도 사용하겠다하면 바로가기를 하나 더 만든 후 이름과 속성을 수정 하면 댐.       

 

--disable-web-security 적용 된 크롬 상단에 표시 됨.

 

 

 3. 크롬 웹 스토어에서 CORS 프로그램 깔기.

  - 크롬 웹스토어에 들어갑니다.

   (https://chrome.google.com/webstore/search/CORS?hl=ko)

  - 검색창에 CORS를 친 후 프로그램 추가

 

저는 'Allow CORS: Access-Control-Allow-Origin' 이라는 프로그램을 설치하고 적용했습니다.

이 프로그램 기준으로 사용법은

  - 크롬의 좌측 상간의 C:라는 것을 눌러줍니다.

 - C: 를 누르면 사진과 같이 뜨는데, 흑색 커다란 C:를 누르면 활성화가 됩니다.

 - 사용을 안하실때는 색상 C:를 다시 누르면 비활성화가 됩니다.

jre 문제를 해결 하고

톰캣을 돌리니 바로 또 에러가 났다...


이번에 난 에러는 


org.apache.catalina.startup.ContextConfig processAnnotationsJar

심각: Unable to process Jar entry [org/w3/x2000/x09/xmldsig/SignedInfoType$Factory.class] from Jar [jar:file:/C:/DevTools/workspace/projectNm/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/projectNm/WEB-INF/lib/poi-ooxml-schemas-3.12.jar!/] for annotations

java.util.zip.ZipException: ZipFile invalid LOC header (bad signature)

at java.base/java.util.zip.ZipFile$ZipFileInputStream.initDataOffset(Unknown Source)

at java.base/java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)

at java.base/java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source)

at java.base/java.util.zip.InflaterInputStream.read(Unknown Source)

at java.base/java.io.BufferedInputStream.fill(Unknown Source)

at java.base/java.io.BufferedInputStream.read(Unknown Source)

at java.base/java.io.DataInputStream.readInt(Unknown Source)

at org.apache.tomcat.util.bcel.classfile.ClassParser.readID(ClassParser.java:237)

at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:114)

at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134)

at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010)

at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976)

at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)



으로 쭉 나열 되는 데 딴건 모르겠고,,

눈에 띄는 한 문장


'java.util.zip.ZipException: ZipFile invalid LOC header (bad signature)'


라는 한 줄인데, Maven을 사용하다 보면 빌다가 종종나는 에러라고 한다..

원인은 압축파일(zip, jar)이 깨져서 발생한 에러라고 입니다.


해결 방법은 두가지로

 1. 깨진 압축파일을 찾아서 바꿔주는 것

 2. 기존에 에러가 발생하고 있던 repository폴더를 지우고 다시 다운로드


두가지인데 따지고 보면 그냥 깨진걸 없애고 새거로 갈아끼워주면 된다고 보면 된다.


나와 같은 경우엔 'C:/../lib/' 위치의 'poi-ooxml-schemas-3.12.jar' 파일이 오류이기에

poi-ooxml-schemas-3.12.jar 파일을 새로 다운 해서 넣어주니 에러가 사라졌다.


내가 사용한 파일도 혹시 모르니 첨부파일로 올려두었다.


poi-ooxml-schemas-3.12.jar



 


프로젝트를 이클립스에 import했더니 아니나 다를까 에러가 쭉... ㅠ



70개의 에러가 보인다...ㅜㅜ

왜 한번에 쉽게 되는 게 없을까요..ㅠㅠ

무슨 에러인지 잘 모르겠고.. 한번 쭈욱 읽는데




그 중 눈에 띄는 저 마지막 줄!


 'Unbound classpath container: 'JRE System Library [jre7]' in project' 


그렇게 이번에러는 jre 문제로 'JRE unbound' 라는 것입니다.

이번엔 해결해도 다음에 못할거 같으니 저장을 해둬야지...


1. 'project > properties'에 들어가서 'Java Build Path' 를 누릅니다.





빨갛게 jre7이 오류가 났다고 표시를 뿜뿜하는데

저건 remove 해서 지워주고,

새로 jre를 추가 하도록 해야겠습니다.


고로 오른쪽의 'Add Library' 버튼을 눌러줍니다.


2. 'Add Library > JRE System Library' 를 누르고 NEXT! 



4. Alternate JRE에서 추가할 jre를 넣어준 다음  'Finish' 버튼을 눌러줍니다!



넣고 난 다음에 창을 확인을 해보면



뚜둔! 아까의 빨간 jre

JRE unbound라고 뜨던 jre도 사라지고

추가된 jre가 자리잡고 있는걸 확인할 수 있습니다.


그리고난 다음에는 apply해주고 창을 닫고

다시 Problems쪽을 봐주면 



Error라고 뜬 부분이 깔끔하게 다 없어진걸 확인 할수있습니다.



 org.apache.catalina.startup.ContextConfig processAnnotationsJar


이라는 에러가 발생했었다. (좀더 길었지만... 요약해서 보면 저 문제?)

이 문제를 찾아보니 내용을 한글로 바꾸어 보자면, 


'Tomcat 서버가 STS에서 서버 및 응용 프로그램을 시작하지 못합니다.'  라고 한다.


즉, 간단하게 말하면 서버 sts에서 jar를 제대로 가져오지 못한다는 것!


이런경우에는

maven / project / sever 를 모두 clean 하고 sever를 다시 설치하라는 말이 있었는데, 나같은경우엔 되지않음.

혹은 maven을 다시 업데이트 해보라는 말도있었으나 이도 안댐..


나와 같은 경우에는 clean 하는 도중에 jar 파일이 깨지는 경우가 발생한다.

(이유는 모르겠다. 차차 찾아보거나 누가 알려주었으면...)

그래서 깨지는 해당 jar파일을 다운받아서 해당 자리에 넣어준다면 간단하게 해결가능하다,




ps. clean할때마다 계속 깨져서 계속 넣어주게된다..

이유를 꼭 알아봐야지..ㅜ



+ Recent posts