반응형

objectMapper 사용 중 다음과 같은 에러가 났다.

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('s' (code 115)): was expecting double-quote to start field name

 

에러난 코드부분은 이부분.

String timestring = {startTime=08:00, endTime=20:00}

objMapper.readValue(timestring,HashMap.class)

 

결론부터 말하자면 readValue의 파라미터로 JSON형태의 String과 Classtype을 넣어줘야함.

나는 JSON형태의 스트링을 넣지 않았기 때문에 에러가 남.



저 timestring 자리가 JSON형태의 String이 들어가는 자리

objMapper.readValue(timestring,HashMap.class)
//objMapper.readValue(JSONString,변환할type)

objMapper.readValue가 JSON형태의 String을 원하는 CLASS 타입으로 변환할 수 있도록 하는데

JSON 형태의 String 은 {"key이름" : "value"} 으로 생겼다.
근데 내가 넣은 String은  {startTime=08:00, endTime=20:00} 이렇게 생겼으니...

double quote (쌍따옴표)를 찾는데 없어서 에러가 난 것...

반응형
반응형

JSON 데이터를 dto 객체로 맵핑할 때 선언되지 않은 property가 있는경우 

이런 에러가 뜬다...

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

 

예를 들어 json 데이터에는 name, color, size 프로퍼티가 있는데

{
    "name" : "apple",
    "color" : "green",
    "size" : "small"
}

dto 클래스에는 size 프로퍼티가 없다? 그러면 에러 나는 거임..

public static class fruitDto {
    public String name;
    public String color;
}

 

해결 방법 : 

@JsonIgnoreProperties(ignoreUnknown = true)

를 추가 해주자.

 

 

반응형
반응형

 빌드 중 아래 에러가 뜨는 경우

package javax.xml.bind does not exist

 

java 11을 이용중인경우에 뜨는 듯 하다.

java 11에서는 JavaEE 와  CORBA 모듈이 포함되어 있지 않다고 한다.

해결법 :

java 8 버전을 이용하거나

java11을 계쏙 이용하고 싶으면 아래처럼 해당 모듈을 손수 추가해 주면 되겠다.

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-core</artifactId>
  <version>2.3.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.0</version>
</dependency>

 

java8을 사용중인데 위와 같은 에러가 뜬다면

cmd에서 java -version 으로 자바 버전을 확인해보자... 

나는 java11과 java8이 둘 다 설치되어 있었는데 java11로 잡혀있어서 에러가 떴던 것이었다... 

 


참고 페이지 

 

Java 11 package javax.xml.bind does not exist

I'm trying to deserialize XML data into a Java content tree using JAXB, validating the XML data as it is unmarshalled: try { JAXBContext context = JAXBContext.newInstance("com.acme.foo");

stackoverflow.com

 

반응형
반응형

빌드하는디 컴파일에러나서 보니까 dto에....

cannot find symbol

getter setter를 못찾는것 같다 -> lombok에 문제있다

 

찾아보니

gradle 버전 5 이상에서 lombok 사용시 컴파일에 문제가 있나봄.

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360003400520-Intellij-Idea-Lombok-Gradle-5-broken-build

 

개발환경

Gradle 6.8

Intellij 2021.1.3

Java 11.0.11

 

의존성 아래처럼 수정하니 빌드 잘 된다.

compileOnly("org.projectlombok:lombok:1.18.10")
annotationProcessor("org.projectlombok:lombok:1.18.10")
반응형
반응형

git에서 clone받아 npm run serve 입력을 했는데 오류가 뜨면서 안된다.... ㅠ ㅠ

D:\takoyaki23\front>npm run serve

> front@0.1.0 serve D:\takoyaki23\front
> vue-cli-service serve

'vue-cli-service'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! front@0.1.0 serve: `vue-cli-service serve`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the front@0.1.0 serve script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\heirr\AppData\Roaming\npm-cache\_logs\2021-09-30T12_13_34_121Z-debug.log

 

>>>>해결방법

1. npm cache clean --force 입력

2. node modules 삭제 후 npm install로 재설치

반응형
반응형

Spring Boot & Vue 환경에서 

API 호출에 실패했는데, Status Code를 보니 

431 Request Header Fields Too Large 이었다.

 

vue 폴더 밑의 vue.config.js 에서 proxy 설정을 제대로 안했음

proxy 경로를 백엔드 서버에서 사용하는 포트(8080)로 해놓아야 했음.

module.exports = {
  outputDir: "../src/main/resources/static",
  indexPath: "../static/index.html",
  devServer: {
    proxy: "http://localhost:8080"
  },
  chainWebpack: config => {
    const svgRule = config.module.rule("svg");
    svgRule.uses.clear();
    svgRule.use("vue-svg-loader").loader("vue-svg-loader");
  }
};

바꿔주고 npm run serve로 재시작하니 잘 된다.

 


431 오류 관련 참고

https://www.okta.com/identity-101/http-error-431/

 

HTTP Error 431: Definition, Status, Causes & Solutions | Okta

HTTP error 431 shows the status code request header fields too large. Learn how to correct the different issues that generate error 431.

www.okta.com

 

반응형
반응형

Spring 환경에서 mybatis로 postgresql 연동하여 사용하는 환경.


수정 전 쿼리

 <select id="selectCount" parameterType="com.export.model.DataDto" resultType="Integer">
        SELECT COUNT(*)
        FROM ${tableName}
        WHERE ${dataTimeColumn} BETWEEN #{startTime} AND #{endTime}
</select>

where 절에 시간으로 조건을 줬는데... 에러가 났다.

Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: timestamp without time zone >= character varying

dataTimeColumn 컬럼은 timestamp 타입이라...

timestamp without time zone 타입이랑 character 타입이랑 연산이 안 된다는 것 같다.

 

 

해결방법 : TO_TIMESTAMP(문자열,'YYYY-MM-DD') 를 사용하여 문자열을 Date형식으로 변환해준다.

 

수정 후 쿼리

<select id="selectCount" parameterType="com.export.model.DataDto" resultType="Integer">
        SELECT COUNT(*)
        FROM ${tableName}
        WHERE ${dataTimeColumn} BETWEEN TO_TIMESTAMP(#{startTime},'YYYY-MM-DD') AND TO_TIMESTAMP(#{endTime},'YYYY-MM-DD')
</select>
반응형
반응형

자바스크립트 에러 확인

in promise : fetch 구문에서 응답인 promise 쪽에서 에러 난 것

Unexpected token < in JSON : 대상을 JSON으로 파싱 중 < 를 발견, 즉 대상이 제대로 된 JSON 형식이 아니란 소리

 

에러난 api 호출 코드(fetch)

fetch("https://test.com:8080/api/test", {
    method: "POST",
    credentials: "include",
    headers: {
      "Content-Type": "application/json",
    },
    redirect: "follow",
    referrer: "no-referrer",
    body: JSON.stringify(obj),
  })
    .then((response) => response.json())
    .then(function (res) {
    });

응답을 처리하는 response.json()에서 에러가 났다. response가 json 형태가 아닌가보다.

response.json() : 응답을 JSON 형태로 파싱함

 

response를 확인해보자

F12 > Network > api 재요청(새로고침) > api 이름 선택 > Response 확인

Response가 json 형태가 아니다.

그래서 에러남.

응답이 잘 오도록 코드 수정. . . 

반응형
반응형

Driver org.mariadb.jdbc.Driver claims to not accept jdbcUrl 에러 자꾸 뜸

근데 뒤에 url 이름이 내가 설정한 maria db url이 아님

 

  • 내가 사용하는 profile : real
  • application-real-db-properties에 database url 명시되어있음

 

  • build.gradle에서 mariadb 드라이버 추가되어있음

 

 

application.properties에 명시된 이 hikarl.jdbc-url 때문이었음.

application.properties가 공통 속성 설정이라 이 url을 사용해서 그런거였음

 

주석처리하니 잘 됨.

반응형
반응형

javascript 에서 DataTable 생성시 발생하는 에러

개빡쳐

원인은 다음과 같다.

1. 필요한 라이브러리가 로드되지 않은 경우

2. jquery 라이브러리가 중복돼서 로드된 경우

3. 라이브러리 로드 순서

실제로 jquery 라이브러리가 중복돼서 저런 에러가 났었다.


1. 필요한 라이브러리가 로드되었는지 확인

<!--로컬에 넣어놓은거임-->
<script src="js/lib/jquery/jquery.dataTables.js"></script>
<script src="js/lib/datatables/dataTables.bootstrap4.js"></script>
<script src="js/lib/datatables/dataTables.buttons.min.js"></script>
<script src="js/lib/datatables/buttons.html5.min.js"></script>
<script src="js/lib/datatables/dataTables.responsive.js"></script>

DataTable을 사용하는 페이지 우클릭 > Network > All 에서 DataTable로 검색해보면

라이브러리가 로드되었는지 확인할 수 있다.


2. jquery 라이브러리가 중복되어 로드되었는지 확인 

  <!-- jquery 라이브러리가 두 개 있어서 아래꺼 주석처리하니 정상동작함 ㅠ-->
  <script src="js/lib/jquery/jquery-latest.min.js"></script>
  <!-- <script src="js/lib/jquery/jquery-1.12.4.js"></script> -->

html파일 상단 소스도 확인하고

js 파일로 따로 빼놓은 소스도 확인하고

html 코드 중간에 <script>로 박아넣은 소스도 확인하자 ^.ㅠ

개고생함


3. 라이브러리 로드 순서

로드 순서도 영향있다고 하는데 아직 안 겪어봐서 모르겠다 

 

반응형

+ Recent posts