AlgoMate#2 - Jplag를 통한 유사도 검사

2025. 2. 1. 00:56·AlgoMate

간단하게 컨트롤러와 서비스 로직만 구현하였다.

 

우선 jplag를 사용하기 위해서 

// jplag 유사도 검사
implementation 'de.jplag:jplag:3.0.0'

해당 의존성을 주입하여야한다.

 

이후 

간단한 엔드포인트와 

서비스 로직을 구현해준다.

@RestController
@RequestMapping("/api/jplag")
public class SimilarityContorller {

    @Autowired
    private SimilarityService similarityService;

    @GetMapping("/compare")
    public List<JPlagComparison> compareSolution(@RequestParam String solutionsPath) throws ExitException {
        return similarityService.compareSoultions(solutionsPath);
    }

}

 

@Service
public class SimilarityService {
    public List<JPlagComparison> compareSoultions(String solutionPath) throws ExitException {
        // jplag 옵션 설정
        JPlagOptions options = new JPlagOptions(
                solutionPath, // 비교할 폴더 경로
                LanguageOption.PYTHON_3  // 언어 설정
        );

        // jplag 실행
        JPlag jplag = new JPlag(options);
        JPlagResult result = jplag.run();

        // 유사도 비교 결과 확인
        return result.getComparisons();
    }
}

 

 

그러나 실행해보니 오류가 발생하였다.

java.lang.ExceptionInInitializerError: Exception java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 3 (expected 4). [in thread "http-nio-8080-exec-1"]

파이썬 코드에 대해서 의존성을 맞춰줘야하나보다

// 파이썬 parser
implementation 'org.antlr:antlr4-runtime:4.9.3'

 

이제 다시 코끼리를 돌리고 실행해보니

 

http://localhost:8080/api/jplag/compare?solutionsPath=src/main/resources/solutions/1012/python

 

성공한 유사도 검사!

'AlgoMate' 카테고리의 다른 글

Celery + Redis vs Celery + RabbitMQ: 어떤 선택이 더 나을까?  (0) 2025.02.17
🚀 동적으로 파일을 제공하는 방법  (2) 2025.02.16
Spring Boot 단위 테스트: @Mock 과 @InjectionMocks의 원리와 활용  (2) 2025.02.14
AlgoMate#3 - docker 로 띄운 DB 에 접근하기(PostgreSQL)  (2) 2025.02.01
Algomate#1 - 내 정답과 유사한 알고리즘의 정답을 추천해준다고??!  (0) 2025.01.30
'AlgoMate' 카테고리의 다른 글
  • 🚀 동적으로 파일을 제공하는 방법
  • Spring Boot 단위 테스트: @Mock 과 @InjectionMocks의 원리와 활용
  • AlgoMate#3 - docker 로 띄운 DB 에 접근하기(PostgreSQL)
  • Algomate#1 - 내 정답과 유사한 알고리즘의 정답을 추천해준다고??!
SungHoJung
SungHoJung
  • SungHoJung
    HOLOUD
    SungHoJung
  • 전체
    오늘
    어제
    • 분류 전체보기 (39)
      • AlgoMate (13)
      • TroubleShooting (0)
      • 여러가지 모음집 (4)
      • Infra (17) N
  • 링크

    • github
  • 인기 글

  • 태그

    celery+rabbitmq
    메세지 브로커
    IAM
    bypass recaptcha
    컨테이너 간 통신
    Celery
    AWS
    celery+redis
    로컬 서버와 통신
    EC2
    Kubernetes
    redis
    스왑 메모리 설정
    docker-compose
    recaptcha 우회
    ci-cd
    host.docker.internal
    k8s
    ECS
    크롤링한 데이터
  • hELLO· Designed By정상우.v4.10.3
SungHoJung
AlgoMate#2 - Jplag를 통한 유사도 검사
상단으로

티스토리툴바