'java'에 해당되는 글 40건

 
  1. 2021.12.14 안드로이드 앱 APK 생성 오류, Invalid keystore format, com.android.ide.common.signing.KeytoolException: Failed to read key, Android Studio, IntelliJ 12
  2. 2021.03.17 스프링부트 세션아이디와 셋쿠키값 다름, SpringBoot getSessionId, SetCookie, SessionId 12
  3. 2020.12.27 스프링부트 로그파일 생성안됨, logging.file, application.properties, pom.xml 6
  4. 2020.12.04 젠킨스에 자바 설정 - 11/17 AWS EC2 JENKINS 스프링부트 자동배포 8
  5. 2020.12.03 EC2에 자바1.8 설치, 설정 - 5/17 AWS EC2 JENKINS 스프링부트 자동배포 7
  6. 2020.11.22 자바 모든 세션값 출력, Java Session Enumeration PrintAll 3
  7. 2020.11.22 자바, 스프링부트에서 레디스 키-값 출력 예제, SpringBoot+Redis Key-Value PrintAll 2
  8. 2020.11.20 [ECLIPSE] Failed to load the JNI shared library, 이클립스 실행 오류 1
  9. 2020.09.15 DBEAVER JAVA VM 설정하기, javaw.exe in your current PATH 1
  10. 2020.08.09 AWS EC2 JAVA8 설치, JAVA8사용설정, JAVA7 삭제 1
  11. 2019.01.30 [JAVA/JSP] 사용자 IP, 접속자 IP, 클라이언트 IP 주소 가져오기 샘플코드 2
  12. 2014.03.06 [JAVA/JSTL] JSTL 포매터 오류, Cannot convert 2014-02-24 10:43:12.67 of type class java.lang.String to class java.util.Date 1
  13. 2014.02.11 SEVERE: Servlet threw load() exception, Throwable occurred: org.xml.sax.SAXParseException: cvc-id.2: ID 값 'XXXXController'이(가) 여러 번 나타납니다. 3
  14. 2014.02.06 아파치 톰캣 8.0.1 베타버전, Apache Tomcat 8.0.1 (beta) 1
  15. 2014.01.02 REGEXP C:URL PAGECONTEXT REQUEST CONTEXTPATH REPLACE 1
  16. 2013.11.06 [ECLIPSE/MAVEN] 오라클 라이브러리 설정, Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0, ORACLE CONNECTOR OJDBC14 ERROR 8
  17. 2013.09.16 [JavaScript/jQuery] 자바스크립트 제이쿼리 숫자에 천단위 콤마, 통화형식으로 변환 2
  18. 2012.10.25 [ECLIPSE/WEBSPHERE] 웹스피어(이클립스) 64비트 운영체제에서 실행시 에러, JVM terminated. Exit code=1 1
  19. 2012.10.05 [JAVA] 자바 스플릿 함수 예제, Java Split Function 1
  20. 2012.09.18 [JAVA/JSP] 데이트포멧 에러, DateFormat Error, java.lang.IllegalArgumentException: Illegal pattern character 'T' in
  21. 2012.09.05 [ECLIPSE] 서버시작, 검색에러, Resource is out of sync with the file system
  22. 2012.01.03 [JAVA] 자바 달력 날짜 사용법, 현재날짜, 현재시간, 24시 java.util.Calendar 1
  23. 2011.03.09 [JAVA/JSTL] varStatus, JSTL 루프 상태값 1
  24. 2011.03.09 [JAVA/JSTL] JSTL 예제 FOR, FOREACH, 변수선언, 배열선언 1
  25. 2011.02.25 [JAVA] 이미지 리사이즈용 소스, 썸네일 만들기, THUMBNAIL, IMAGE, RESIZE 2
  26. 2011.02.01 [JAVA/JSP] 쌩 JSP, 레알 초간단 파일 다운로드 소스 5
  27. 2010.12.07 [JAVA] DTO VO Value Object 1
  28. 2010.10.28 [IBATIS] 아이바티스 쿼리 작성시 유의사항, com.ibatis.common.xml.NodeletException, Error parsing XML 1
  29. 2010.10.28 [ECLIPSE/JAVA] 이클립스 컴파일 에러, Java compiler level does not match the version of the installed Java project facet 4
  30. 2010.10.13 [ECLIPSE] 이클립스 알아두면 유용한 단축키 1
2021. 12. 14. 12:02 ANDROID IOS
안드로이드 앱 APK 생성 오류, Invalid keystore format, com.android.ide.common.signing.KeytoolException: Failed to read key, Android Studio, IntelliJ

언젠가부터 갑자기 apk생성이 실패합니다.

건드린것도 없는데;;; (건드렸겠지)

이 프로젝트 말고 다른 프로젝트는 apk가 잘 생성됩니다.

메세지에는 파일이 잘못됬다고 나옵니다. (바이너리파일인데 수정한적도 없는데)

 

 

Generate Signed Bundle or APK

 

 

오류 발생 - Invalid keystore format

Execution failed for task ':app:packagePrdRelease'.
> A failure occurred while executing com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable
   > com.android.ide.common.signing.KeytoolException: Failed to read key mathpid from store "C:\PROJECT\**********.keystore": Invalid keystore format

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
오전 11:32	Gradle build failed with 1 error(s) in 5 s 16 ms
오전 11:32	Generate Signed APK: Errors while building APK. You can find the errors in the 'Messages' view.

 

찾아보니 apk생성시 사인할때 java를 이용하는데 1.8이하는 안된다고 합니다.

애초에 keystore파일 생성할때 java 11로 했었던것 같습니다. (인텔리제이 기본 자바 버전이 11이니깐...)

제 컴퓨터에는 이클립스로 개발중인 사이트가 이용하는 JAVA_HOME, 1.8이 있습니다.

그래들 자바 버전을 봤더니 1.8이 물려있었습니다.

그래서 11로 변경했습니다.

 

 

File > Settings > Build, Execution, Deployment > Build Tools > Gradle
Gradle JVM: 11버전 선택
사용자마다 다를 수 있습니다. 전 JAVA_HOME(1.8.0_77)에서 Project SDK(11)로 변경했습니다.

 

 

Generate Signed APK

오전 11:43	Generate Signed APK
				APK(s) generated successfully for module '******.app' with 1 build variant:
				Build variant 'prdRelease': locate or analyze the APK.

 

2021. 3. 17. 16:11 PROGRAMMING
스프링부트 세션아이디와 셋쿠키값 다름, SpringBoot getSessionId, SetCookie, SessionId

스프링부트 2.0 이상부터 외부로 나가는 세션아이디는 base64로 인코딩되어 출력된다고 합니다.

 

 

SetCookie로 받은 세션값

YzlkZjRjMDgtODMwMi00OTAxLWE3MzUtMzFjYTE5YWEyMTM1

 

 

JAVA에서 getId로 출력한 세션아이디

request.getSession().getId()

c9df4c08-8302-4901-a735-31ca19aa2135

 

base64 인코딩

request.getSession().getId()의 세션아이디를 base64로 인코딩하면 같은 값이였다는걸 알수있습니다.

2020. 12. 27. 20:33 DEV ENVIRONMENT
스프링부트 로그파일 생성안됨, logging.file, application.properties, pom.xml

스프링부트프로젝트에서 로깅파일이 생성이 안되서 찾아봤더니

In higher versions of spring-boot-parent(from version 2.2.0), property logging.file is deprecated.

2.2.0버전 이상부터는 logging.file이라는 설정이 디프리케이티드 됬다는 예기입니다.

그래서 버전을 수정해주고 다시 테스트해보겠습니다.

 

 

스프링 버전이 2.2.0 미만일때

#application.properties
logging.file=파일명

#application.yml
logging:
	file: 파일명

 

 

스프링 버전이 2.2.0 이상일때

#application.properties
logging.file.name=파일명

#application.yml
logging:
	file:
    	name: 파일명

 

 

 

application.yml, pom.xml

...
...
logging:
  level:
    ROOT: DEBUG
    com.zaxxer.hikari.HikariConfig: INFO
    com.zaxxer.hikari: INFO
    org.springframework: INFO
    org.springframework.jdbc: ERROR
    org.springframework.web.filter: DEBUG    
    jdbc: ERROR
    jdbc.connection: ERROR      # 커넥션 open close 이벤트를 로그로 남긴다      
    jdbc.sqlonly: INFO          # SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다.
    jdbc.sqltiming: WARN        # SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다.
    jdbc.audit: ERROR           # ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다.
    jdbc.resultset: ERROR       # ResultSet 로그를 남긴다. 
    jdbc.resultsettable: ERROR  # SQL 결과 조회된 데이터의 table을 로그로 남긴다.
    org.hibernate.validator: INFO
    springfox: ERROR       
    io.lettuce.core: WARN
    org.apache.http.wire: WARN
  file: 
    name: C:/logs/local.log
    max-size: 100MB
    max-history: 30
...
...
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.9.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
...
...

 

젠킨스에 자바 설정 - 11/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

젠킨스 설정에 가서 설치한 자바를 설정해줍니다.

이전에 이미 자바를 설치했기때문에 설치된 자바를 설정하겠습니다.

자바가 여러개 가지고 싶으면 또 설치해도 됩니다.

 

 

1. 젠킨스 > Jenkins 관리 > Global Tool Configuration

 

 

2. JDK > Add JDK

 

 

3. Install automatically 체크 해제 > Name, JAVA_HOME 입력 > Save

Name은 아무렇게나 입력해도 됩니다.
JAVA_HOME은 본인 인스턴스에 맞는 경로를 입력하세요.

Name		JDK1.8
JAVA_HOME	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-1.amzn2.0.1.x86_64

 

 

 

EC2에 자바1.8 설치, 설정 - 5/17 AWS EC2 JENKINS 스프링부트 자동배포

 

 

EC2를 생성하면 보통 JAVA 1.7이 깔려있습니다. (나중엔 더 높은버전이 깔려있겠죠)

저는 JAVA 1.8로 개발도하고 젠킨스도 돌리고 서버도 돌릴꺼라서 JAVA 1.8을 설치하겠습니다.

이미 JAVA 1.8이 설치되어있으면 작업하지 않아도 됩니다.

 

 

1. yum 업데이트

sudo yum update

 

 

2. 설치된 자바 확인

java -version

 

 

3. 설치가능한 자바 버전 확인

yum list java*jdk

 

 

 

4. java 1.8 설치 (설치가능한 자바 목록에서 복붙하세요)

sudo yum install -y java-1.8.0-openjdk.x86_64

 

 

5. 자바 버전 선택 > 1 > 엔터 (이미 1.8이 선택되어있으면 취소해도 됩니다)

sudo /usr/sbin/alternatives --config java

 

 

6. 다시 자바버전 확인

java -version

 

2020. 11. 22. 01:35 PROGRAMMING
자바 모든 세션값 출력, Java Session Enumeration PrintAll

자바에서 세션값 출력

 

Enumeration을 이용해서 세션에 등록한 모든 값을 출력하는 예제 입니다.

Enumeration<String> attributes = request.getSession().getAttributeNames();
while (attributes.hasMoreElements()) {
    String attribute = (String) attributes.nextElement();
    System.err.println(attribute+" : "+request.getSession().getAttribute(attribute));
}

 

 

2020. 11. 22. 00:32 카테고리 없음
자바, 스프링부트에서 레디스 키-값 출력 예제, SpringBoot+Redis Key-Value PrintAll

 

자바(스프링부트)에서 레디스 키 출력

 

spring:session:TEST:sessions의 모든 값을 출력하는 예제 입니다.

Set<String> redisKeys = redisTemplate.keys("spring:session:TEST:sessions:*");
List<String> keysList = new ArrayList<>();
Iterator<String> it = redisKeys.iterator();
while (it.hasNext()) {
	String data = it.next();
	keysList.add(data);
	System.err.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "+data);
}

 

 

2020. 11. 20. 17:23 DEV ENVIRONMENT
[ECLIPSE] Failed to load the JNI shared library, 이클립스 실행 오류

이클립스를 실행하면 Failed to load the JNI shared library

오류가 발생하면서 실행되지 않습니다.

경로를 확인해봐도 정상적으로 파일이 있습니다.

 

 

원인은 32비트, 64비트가 안맞아서 그런것 입니다.

이클립스가 32비트고 java가 64비트이거나

이클립스가 64비트고 java가 32비트이면

 

 

자바를 바꾸던 이클립스를 바꾸던 32비트로 하든 64비트로 하든 맞춰주면 됩니다.

자바 버전확인을 해보면 32비트인지 64비트인지 확인할 수 있습니다.

java -version

 

2020. 9. 15. 10:16 DEV ENVIRONMENT
DBEAVER JAVA VM 설정하기, javaw.exe in your current PATH

dbeaver실행하다가 다음과 같은 오류가 나면 자바를 못찾아서 발생하는 오류 입니다.

디비버도 이클립스 기반이기때문에 이클립스와 같은 형식의 설정파일이 있습니다.

설치경로(압축푼곳)에 있는 dbeaver.ini에 java 경로를 지정해주면 됩니다.

 

 

dbeaver.ini 파일 수정 - 경로는 자신의 java 경로에 맞게 설정하세요.
-vm
\자바jdkjrd위치\bin

-vm
\PROGRAMS\jdk1.8.0_202\bin
-startup
plugins/org.eclipse.equinox.launcher_1.5.700.v20200207-2156.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1100.v20190907-0426
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Xms64m
-Xmx1024m

 

 

dbeaver 실행

 

 

2020. 8. 9. 22:30 SERVER
AWS EC2 JAVA8 설치, JAVA8사용설정, JAVA7 삭제

aws에서 ec2를 설정하고 자바버전을 확인해보니 1.7이 설치되어있습니다.

저는 1.8을 사용할거니까 1.8을 설치하고 1.7을 삭제하겠습니다.

 

버전확인 > 자바1.8설치 > 기본자바1.8로변경 > 자바1.7삭제 순으로 작업합니다.

 

 

1. 자바버전 확인

java -version

 

2. java 1.8 설치

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

sudo yum install -y java-1.8.0-openjdk-devel.x86_64

 

 

3. 기본 자바 변경

sudo /usr/sbin/alternatives --config java

기본 JAVA 버전 설정

 

4. 자바버전 확인

java -version

JAVA버전 확인

 

5. java 1.7 삭제

sudo /usr/sbin/alternatives --config java

JAVA 1.7 삭제

 

 

 

 

JAVA 1.8 설치

 

2019. 1. 30. 12:22 COMPUTER/JAVA, JSP
[JAVA/JSP] 사용자 IP, 접속자 IP, 클라이언트 IP 주소 가져오기 샘플코드

자바나 JSP로 클라이언트 IP주소를 알아내는 코드 샘플 입니다.


보통 request.getRemoteAddr()로 사용하죠.

IP주소를 알아내는 방법은 여러가지가 있습니다.

3가지나 준비했습니다. 골라서 사용하세요.



클라이언트 IP 주소 가져오기 #1

 
// 클라이언트 IP 주소 가져오기 #1
 
String ipAddress=request.getRemoteAddr();
System.out.println("클라이언트 IP 주소: "+ipAddress);
 



클라이언트 IP 주소 가져오기 #2

 
// 클라이언트 IP 주소 가져오기 #2
 
String header=request.getHeader("X-Forwarded-For");
String ipAddress=new StringTokenizer(header, ",").nextToken().trim();
System.out.println("클라이언트 IP 주소: "+ipAddress);
 



클라이언트 IP 주소 가져오기 #3

// 클라이언트 IP 주소 가져오기 #3
 
String ipAddress=request.getRemoteAddr();
if(ipAddress.equalsIgnoreCase("0:0:0:0:0:0:0:1")){
    InetAddress inetAddress=InetAddress.getLocalHost();
    ipAddress=inetAddress.getHostAddress();
}
System.out.println("클라이언트IP 주소: "+ipAddress);
 




2014. 3. 6. 10:30 COMPUTER/JAVA, JSP
[JAVA/JSTL] JSTL 포매터 오류, Cannot convert 2014-02-24 10:43:12.67 of type class java.lang.String to class java.util.Date

2014-02-24 10:43:12.67 을 스트링 클래스를 날짜 클래스로 변경할 수 없습니다


이 오류는 JSTL에서 형 변환을 할 수 없다는 에러 입니다.

fmt:formatDate에 스트링 말고 데이트 형을 주입해야 합니다.

저의 list.employmentParticipator.eventSendDttm 변수가 String 이였습니다.

Date로 고치면서 해결





에러난 소스

<fmt:formatDate value="${list.employmentParticipator.eventSendDttm}" pattern="yyyy-MM-dd"/>


콘솔 에러

Throwable occurred: javax.el.ELException:
Cannot convert 2014-02-24 10:43:12.67 of type class java.lang.String to class java.util.Date
at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:420)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
...
...


eventSendDttm이 지정된 VO 자바파일

...
...
...
private Date updaterDttm; //수정일시
private String eventSendDttm; //이벤트지급
...
...
...
2014. 2. 11. 17:31 COMPUTER
SEVERE: Servlet threw load() exception, Throwable occurred: org.xml.sax.SAXParseException: cvc-id.2: ID 값 'XXXXController'이(가) 여러 번 나타납니다.
로컬 구동하는데 에러가 났습니다.
SEVERE: Servlet threw load() exception




콘솔 오류 메세지
...
SEVERE: Servlet  threw load() exception
Throwable occurred: org.xml.sax.SAXParseException: cvc-id.2: ID 값 'XXXXController'이(가) 여러 번 나타납니다.
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
...

저의 상황은
멍충하게도 주소 등록하는 xml파일에 중복의 아이디를 넣었습니다.
xml에다 대고 해당 값을 검색해보세요.

오류를 발생시킨 소스
    
    	
    

    
    	
    

2014. 2. 6. 14:14 SERVER
아파치 톰캣 8.0.1 베타버전, Apache Tomcat 8.0.1 (beta)

아직 톰캣 7로 프로젝트도 못해봤는데,

벌써 8이 나오다니요...

베타긴 하지만 조만간에 정식으로 릴리즈 될듯요...

설치는 나중에





아파치 톰캣 8.0.1 (베타) 릴리즈, Apache Tomcat 8.0.1 (beta) Released

http://tomcat.apache.org/





아파치 톰캣 8 다운로드, Apache Tomcat 8 Downloads

http://tomcat.apache.org/download-80.cgi



아파치 톰캣 8 도큐먼트, Apache Tomcat 8 Document

http://tomcat.apache.org/tomcat-8.0-doc/index.html

 

2014. 1. 2. 16:45 COMPUTER/JAVA, JSP
REGEXP C:URL PAGECONTEXT REQUEST CONTEXTPATH REPLACE

C:URL을 사용하면 처음 접속시 JSESSION ID가 붙어나옵니다.

C URL을 contextPath로 변경하기 위한 정규표현식 입니다.



옵션에서 정규표현식 사용을 체크합니다.


검색

<c:url value=['|"]([a-zA-Z0-9\.\/\\\-\_]*)['|"]\s*\/>


치환

\$\{pageContext\.request\.contextPath\}$1



2013. 11. 6. 16:39 DEV ENVIRONMENT
[ECLIPSE/MAVEN] 오라클 라이브러리 설정, Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0, ORACLE CONNECTOR OJDBC14 ERROR

Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0


오라클 라이브러리를 얻으려면 따로 리포지토리 주소를 설정해줘야 합니다.







<repository>
	<id>mesir-repo</id>
	<url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
</repository>


2013. 9. 16. 10:25 COMPUTER/JAVASCRIPT, JQUERY
[JavaScript/jQuery] 자바스크립트 제이쿼리 숫자에 천단위 콤마, 통화형식으로 변환

가격으로 된 숫자에 콤마를 찍어주는 스크립트 입니다.

2000 > 2,000

1123000 > 1,123,000



이전 스크립트는 아이폰 사파리에서 작동하지 않습니다.

2011/06/13 - [SCRIPTING/JAVASCRIPT/JQUERY] - [JavaScript/JS] 자바스크립트 숫자에 천단위 콤마, 통화형식으로 변환 toLocaleString



<script>

$(document).ready(function(){ $('.intCurrency').each(function(index){ $(this).text($(this).text().split(/(?=(?:\d{3})+(?:\.|$))/g).join(',')); }); }); </script>

<span class="red intCurrency">2000</span> <span class="intCurrency sibol kkk">123000</span>





2012. 10. 25. 14:29 DEV ENVIRONMENT
[ECLIPSE/WEBSPHERE] 웹스피어(이클립스) 64비트 운영체제에서 실행시 에러, JVM terminated. Exit code=1

AST를 64비트 운영체제에서 실행하면 에러가 날 수 있습니다.
아래처럼.

JVM terminated. Exit code=1



AST디렉토리\AST\ast.ini파일을 수정합니다.
VMArgs=-Xj9를 주석처리 하세요. ;(세미콜론)으로



IBM WebSphere AST 6.0

Eclipse 3.0.1 Hyades

이클립스 3.0.1 릴리즈 노트

http://www.eclipse.org/eclipse/development/readme_eclipse_3_0_1.html




2012. 10. 5. 09:15 COMPUTER/JAVA, JSP
[JAVA] 자바 스플릿 함수 예제, Java Split Function

Java Split 함수

 

정규표현식에 의한 스트링 배열을 반환하는 함수입니다.

2번째 파라미터 limit 옵션 값으로 갯수를 제어할 수 있습니다.

public String [] split(String  regex, int limit)


 

특수문자 자르기, 자를 문자는 정규표현식이기 때문에 특수문자는 []로 표현해야합니다.

String str="1+2+10+15";
String splitted[]=str.split("[+]");
for (String value : splitted)
	System.out.println(value);

// RESULT
// 1
// 2
// 10
// 15

 

 

자를 문자열 사이가 비었을때 limit파라미터에 -1을 사용하면 빈값으로 배열을 만들 수 있습니다.

String str="1,,3,";

String splitted[]=str.split(",");
for (String value : splitted)
	System.out.println(value);
// RESULT
// 1
// 3

String splitted[]=str.split(",",-1);
for (String value : splitted)
	System.out.println(value);

// RESULT
// 1
// 
// 3
//
2012. 9. 18. 16:01 COMPUTER/JAVA, JSP
[JAVA/JSP] 데이트포멧 에러, DateFormat Error, java.lang.IllegalArgumentException: Illegal pattern character 'T' in

 

코딩 중 에러 발생...

 

2012-10-02T12:50 와 같은 날짜를 만드려고 포멧 스트링에 T를 적었습니다.

 

Unexpected Exception occurred - java.lang.IllegalArgumentException:

Illegal pattern character 'T' in "yyyy-MM-ddTHH:mm:ss"

 

데이트 포맷 스트링에 T를 잘못사용 했다는 에러 입니다.

 

 
하여 역슬레쉬 (\T)로 해봤지만 소용없음

 

 

대신 따옴표를 앞뒤로 붙이면 됩니다.


//잘못된 사용법
 
Calendar calendar=Calendar.getInstance(TimeZone.getTimeZone("Asia/Seoul"));
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss");
String strBuf=dateFormat.format(calendar.getTime());
 


//올바른 사용의 예~

Calendar calendar=Calendar.getInstance(TimeZone.getTimeZone("Asia/Seoul")); 
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String strBuf=dateFormat.format(calendar.getTime());
 


2012. 9. 5. 21:27 DEV ENVIRONMENT
[ECLIPSE] 서버시작, 검색에러, Resource is out of sync with the file system

Resource is out of sync with the file system 에러 발생.

 

이클립스에서

1. 서버를 시작하거나

2. 파일검색을 하거나 등등... 전 두가지를 겪었습니다만,

3. 다른 액션에 의해서도 발생할 수 있을 것입니다.

 

Resource is out of sync with the file system

리소스가 파일 시스템과 동기화되지 않았다는 뜻입니다.

말그대로 동기화 시켜주면 되는것입니다.

 

해결하려면,

 

1. 해당 프로젝트를 선택하고 F5키를 눌러줍니다.

 

2. 그래도 안되면 프로젝트를 선택하고 메뉴에서 Project > Clean 하세요.

 

3. 그래도 안되면, https://www.google.com/search?num=50&hl=ko&newwindow=1&safe=off&q=Resource+is+out+of+sync+with+the+file+system&oq=Resource+is+out+of+sync+with+the+file+system&gs_l=serp.3...0.0.0.289285.0.0.0.0.0.0.0.0..0.0...0.0...1c.oLSbhI344uc

로 가시면 되겠습니다. (구글링 링크)

 

 

 

2012. 1. 3. 10:04 PROGRAMMING
[JAVA] 자바 달력 날짜 사용법, 현재날짜, 현재시간, 24시 java.util.Calendar
년, 월, 일, 시, 분, 초, 24시, 밀리초, 요일 구하기

소스 
import java.util.Calendar;

public class Calendar{
	public static void main(String args[]){
		Calendar calendar=Calendar.getInstance( );
		System.out.println("YEAR "+calendar.get(Calendar.YEAR));
		System.out.println("MONTH "+calendar.get(Calendar.MONTH)+1);
		System.out.println("DAY OF MONTH "+calendar.get(Calendar.DAY_OF_MONTH));
		System.out.println("HOUR OF DAY "+calendar.get(Calendar.HOUR_OF_DAY)); // 24시간
		System.out.println("MINUTE "+calendar.get(Calendar.MINUTE));
		System.out.println("SECOND "+calendar.get(Calendar.SECOND));
		System.out.print("HOUR AM/PM "+calendar.get(Calendar.HOUR));
		if (calendar.get(Calendar.AM_PM)==0) System.out.println("AM");
		else System.out.println("PM");

		System.out.println("MILLISECOND "+calendar.get(Calendar.MILLISECOND));
		System.out.println("DAY OF WEEK "+calendar.get(Calendar.DAY_OF_WEEK)); // 일요일= 1
		System.out.println("DAY OF YEAR "+calendar.get(Calendar.DAY_OF_YEAR)); // 1월1일=1
		System.out.println("WEEK OF YEAR "+calendar.get(Calendar.WEEK_OF_YEAR)); // 1월1일=1
		System.out.println("WEEK OF MONTH "+calendar.get(Calendar.WEEK_OF_MONTH)); // 첫째주=1
	}
}


결과
YEAR 2012
MONTH 01
DAY OF MONTH 3
HOUR OF DAY 10
MINUTE 0
SECOND 31
HOUR AM/PM 10AM
MILLISECOND 852
DAY OF WEEK 3
DAY OF YEAR 3
WEEK OF YEAR 1
WEEK OF MONTH 1

2011. 3. 9. 12:41 COMPUTER/JAVA, JSP
[JAVA/JSTL] varStatus, JSTL 루프 상태값
varStatus, JSTL 루프 상태값
 
< c:foreach items="${RESULT}" var="RESULT" varStatus="status"> 
${status.current}<br/>
${status.index}<br/>
${status.count}<br/>
${status.first}<br/>
${status.last}<br/>
${status.begin}<br/>
${status.end}<br/>
${status.step}<br/>
 < /c:forEach>
 
 
PROPERTY GETTER DESCRIPTION
current getCurrent() 현재 아이템
index getIndex() 0부터의 순서
count getCount() 1부터의 순서
first isFirst() 현재 루프가 처음인지 반환
last isLast() 현재 루프가 마지막인지 반환
begin getBegin() 시작 속성
end getEnd() 끝 속성
step getStep() 현재 스텝 속성
2011. 3. 9. 09:56 COMPUTER/JAVA, JSP
[JAVA/JSTL] JSTL 예제 FOR, FOREACH, 변수선언, 배열선언
간단한 JSTL 예제 입니다.


배열 선언은 못하는대신에 토큰으로 구현할 수 있습니다.
2011/03/09 - [SCRIPTING] - [JAVA/JSTL] JSTL Tokenizer, 배열대용


변수 선언
<c:set var="testVar" value="${param.testVar}" />


루프, FOREACH STATEMENT
<c:forEach items="${resultList}" var="resultList" varStatus="status">
${status.count}
...CODE...
</c:forEach>


루프, FOR STATEMENT
<c:forEach var="i" begin="0" end="5" step="1">
...CODE...
</c:forEach>


비교, IF
<c:if test="${i==0}">
...CODE...
</c:if>

2011. 2. 25. 17:53 PROGRAMMING
[JAVA] 이미지 리사이즈용 소스, 썸네일 만들기, THUMBNAIL, IMAGE, RESIZE

사용법은 패스~

import [패키지];

File fileSource=new File("C:\ORIGINAL\","SOURCE.JPG");
File fileThumb=new File("C:\TEST\","AHNDOORI.JPG");  
ImageUtil.resizeImage(fileSource,fileThumb,128,96);

 

package [패키지];

import java.io.File;
import java.io.IOException;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class ImageUtil{
 public static final int RATIO=0;
 public static final int SAME=-1;

 // 소스파일, 타겟파일, 최대값
 public static void resizeImage(File src,File dest,int boxsize) throws IOException{
  int width=0;
  int height=0;
  Image srcImg=setImage(src);
  int srcWidth=srcImg.getWidth(null);
  int srcHeight=srcImg.getHeight(null);

  if(srcWidth>srcHeight){
   width=boxsize;
   height=(int) ((double) boxsize/(double) srcWidth);
  }else if(srcWidth<srcHeight){
   width=(int) ((double) boxsize/(double) srcHeight);
   height=boxsize;
  }else {
   width=boxsize;
   height=boxsize;
  }

  try{
   if(srcWidth<=boxsize && srcHeight<=boxsize) resizeImage(src, dest, -1, -1);
   else resizeImage(src, dest, width, height);
  }catch(IOException e){
   throw e;
  }
 }

 // 소스파일, 타겟파일, 넓이, 높이
 public static void resizeImage(File src,File dest,int width,int height) throws IOException{
  Image srcImg=setImage(src);

  int srcWidth=srcImg.getWidth(null);
  int srcHeight=srcImg.getHeight(null);
  int destWidth=-1, destHeight=-1;

  if(width==SAME) destWidth=srcWidth;
  else if(width>0) destWidth=width;

  if(height==SAME) destHeight=srcHeight;
  else if(height>0) destHeight=height;

  if(width==RATIO && height==RATIO){
   destWidth=srcWidth;
   destHeight=srcHeight;
  }else if(width==RATIO){
   double ratio=((double) destHeight)/((double) srcHeight);
   destWidth=(int) ((double) srcWidth*ratio)-1;
  }else if(height==RATIO){
   double ratio=((double) destWidth)/((double) srcWidth);
   destHeight=(int) ((double) srcHeight*ratio)-1;
  }

  Image imgTarget=srcImg.getScaledInstance(destWidth,destHeight,Image.SCALE_SMOOTH);
  int pixels[]=new int[destWidth*destHeight];
  PixelGrabber pg=new PixelGrabber(imgTarget, 0, 0, destWidth, destHeight, pixels, 0, destWidth);
  try{
   pg.grabPixels();
  }catch(InterruptedException e){
   throw new IOException(e.getMessage());
  }
  BufferedImage destImg=new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
  destImg.setRGB(0, 0, destWidth, destHeight, pixels, 0, destWidth);
  ImageIO.write(destImg, "jpg", dest);
 }

 private static Image setImage(File src) throws IOException{
  Image srcImg=null;
  String suffix=src.getName().substring(src.getName().lastIndexOf('.')+1).toLowerCase();
  if(suffix.equals("bmp")) srcImg=ImageIO.read(src);
  else srcImg=new ImageIcon(src.toURI().toURL()).getImage();
  return srcImg;
 }

}

2011. 2. 1. 15:19 COMPUTER/JAVA, JSP
[JAVA/JSP] 쌩 JSP, 레알 초간단 파일 다운로드 소스

인터넷에 떠도는 '초간단 파일다운로드 소스'는 IBboard라는 라이브러리가 필요합니다.
그 소스는 개초보는 사용할 수 없습니다.
당신이 개초보라면 이 소스를 사용하는것이 정신건강에 좋습니다.

1. 소스에 '절대경로'를 실제 다운로드 받을 파일이 있는 위치로 수정하세요.
    윈도우라면 (C:\디렉토리\...), 리눅스라면 (/디렉토리/디렉토리/...)
2. 수정한 내용을 서버 루트에 'download.jsp'로 저장하십시요. (물론 이렇게 안해도 좋습니다.)
3. 브라우저를 키고 'http://서버주소/download.jsp?file=파일명' 으로 테스트하면 됩니다.
* 파일명은 서버에 존재해야합니다.

<%@ page contentType="application;" %>
<%@ page import="java.util.*,java.io.*,java.sql.*,java.text.*"%>
<%
String strFilename=java.net.URLDecoder.decode(request.getParameter("file"));
String strFilenameOutput=new String(strFilename.getBytes("euc-kr"),"8859_1");
File file=new File("절대경로"+strFilename);
byte b[]=new byte[(int)file.length()];
response.setHeader("Content-Disposition","attachment;filename="+strFilenameOutput);
response.setHeader("Content-Length",String.valueOf(file.length()));
if(file.isFile()){
 BufferedInputStream fin=new BufferedInputStream(new FileInputStream(file));
 BufferedOutputStream outs=new BufferedOutputStream(response.getOutputStream());
 int read=0;
 while((read=fin.read(b))!=-1){outs.write(b,0,read);}
 outs.close();
 fin.close();
}
%>

이것도 안되면,
아래 댓글창에 질문을 올리거나,
머리를 쥐어뜯어버리세요.
2010. 12. 7. 17:37 COMPUTER/JAVA, JSP
[JAVA] DTO VO Value Object
http://en.wikipedia.org/wiki/Data_transfer_object

VO는 Value Object의 약자로 보통 두 가지 의미로 사용됩니다. 

예전에는 여러 값을 담아두고 다른 곳에 전달하는 목적으로 객체를 쓸 때 그 
객체를 Value Object라고 했습니다. 
그런데 요즘은 DTO라는 더 정확한 명칭으로 바꾸어서 말하고 있습니다. 

요즘 말하는 Value Object는 말 그대로 값을 나타내는 객체입니다. 
대체로 불변성이고 
equals() 로 비교할 때 객체의 모든 값을 비교해야 하고 필드 수가 많지 않습니다. 
java의 Integer, Date, Long, String 같은 것이 대표적인 VO이고 여기에 돈을 
나타내는 Money, 좌표를 나타내는 Point , 우편번호 ZipCode, 주소 Address 
같은 것을 만들었다면 Value Object라고 할 수 있습니다. 

2010. 10. 28. 18:01 PROGRAMMING
[IBATIS] 아이바티스 쿼리 작성시 유의사항, com.ibatis.common.xml.NodeletException, Error parsing XML

논리연산자를 아무렇게나 사용하면 에러가 납니다.
왜냐면 XML파일이기 때문이죠.
GREATER나 LESS를 쓰면 태그로 인식하는것입니다.

<![CDATA[ STRING ]]> 으로 쿼리 전체를 감싸도 됩니다.

이것때문에 파일이 깨지면 컴파일이 안되서 길쭉한 에러를 보게됩니다.

Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.
Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

적용방법
<= : <![CDATA[ <= ]]>
=> : <![CDATA[ => ]]>
< : <![CDATA[ < ]]>
> : <![CDATA[ > ]]>

샘플
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="QueryManager">
 <select id="sampleQuery1" resultClass="java.util.HashMap">
  SELECT * FROM (
   SELECT ROWNUM AS RNUM, COL1, COL2, COL3, COL4 FROM BOARD
   ORDER BY COL1 ASC, COL2 DESC
  ) WHERE RNUM <![CDATA[ <= ]]> #START# ORDER BY COL1 DESC, COL2 ASC

 </select>

 <select id="sampleQuery2" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
  SELECT COUNT(*) AS TOTAL FROM BOARD
 </select>

2010. 10. 28. 11:02 DEV ENVIRONMENT
[ECLIPSE/JAVA] 이클립스 컴파일 에러, Java compiler level does not match the version of the installed Java project facet
설치된 자바 버전과 프로젝트의 컴파일러 버전이 맞지 않을때 나는 에러입니다.
물론 실행은 잘 되고 있을 확률이 높음...

Error: Java compiler level does not match the version of the installed Java project facet

프로젝트에 마우스 오른쪽 > Properties > Project Facets
자바버전을 설치된 것과 같은 것으로 맞춰주면 해결됩니다.


2010. 10. 13. 13:32 DEV ENVIRONMENT
[ECLIPSE] 이클립스 알아두면 유용한 단축키

Ctrl+Shif+L : 단축키 메뉴

Ctrl+1 : 퀵 픽스
Ctrl+SpaceBar : 컨텐트 어시스트
Ctrl+Shift+O : Java 클래스 자동 임포트

CTRL+L : 줄번호 이동
F3 : 선언위치로 이동

Ctrl+/ : 주석 설정
Ctrl+Shift+/ : 블럭 주석 설정
Ctrl+Shift+Y : 소문자로 변경
Ctrl+Shift+X : 대문자로 변경
Alt+Shift+J : 자동주석

Alt+Shift+S : 에디터 메뉴
Alt+Shift+Z : 스테이트먼트(for,while,...) 메뉴








최근에 올라온 글

최근에 달린 댓글