
우리가 배포한 웹 서비스에 문제가 있었습니다. 사용자는 로그인할 수 없었고 로그에는 오류와 예외 스택 추적이 표시되었습니다. Dev는 문제를 해결하기 위해 노력하고 배포할 새 패키지를 제공했습니다.
새 패키지를 배포하고 이를 사용하려고 하면 계속해서 오류가 발생합니다.이전에 받았던 것과 정확히 동일한 오류 및 예외 스택 추적, 스택 추적의 동일한 파일/줄 번호까지 바로 내려갑니다. 일부 줄 번호는 오류를 일으킬 수 있는 항목을 가리키지도 않고 오히려 오류를 일으킨 문제가 있는 줄이 있었던 줄 번호의 공백을 가리킵니다.
배포 취소/재배포도 마찬가지입니다.
JBoss를 다시 시작하고, 배포 취소/재배포도 마찬가지입니다.
배포를 취소하고 오류를 일으키는 파일을 "file.jar.bak"로 이동하여 "존재하지 않도록" 한 다음 재배포합니다... 배포가 실패합니다(그 시점에서는 좋습니다). 이제 다음과 같은 오류가 발생합니다. 파일을 찾을 수 없기 때문에 배포할 수 없습니다. 좋습니다. 적어도 내가 파일을 변경한다는 사실에 주의를 기울이는 것입니다. 하지만 이제 "file.jar.bak"를 "file.jar"로 다시 이동하고 다시 배포하면 새 배포 대신 이전 배포와 동일한 오류/줄 번호를 다시 제공하게 됩니다!
무슨 일이야??? 아마도 오래된 것이 어딘가에 캐시되어 있을까요? 이 문제의 원인은 또 무엇입니까?
답변1
한숨을 쉬다나는 지금 멍청하다고 느낀다. 질문을 입력하고 고민하고 수정하던 중 갑자기 문득 생각이 나서 수정했습니다. 어쨌든 나는 그것을 게시할 것이고, 그것이 다른 사람들에게 도움이 될 경우를 대비하여 내 어리석은 실수가 무엇인지 공유할 것입니다...
우리는 JBoss 5에서 최신 버전으로 마이그레이션하는 마지막 단계에 있습니다. 최신 버전은 "ear" 아카이브에서 특정 디렉터리 구조나 파일을 구성하는 방법에 대해 더 엄격합니다. 우리의 jar 파일은 아카이브의 루트에 있었지만 새로운 엄격한 지침을 충족하기 위해 단지 루트가 아닌 아카이브 내의 "lib/" 디렉토리에 있어야 합니다.
글쎄, lib 디렉토리가 생성되었고 jar 파일이 거기에 – 심지어 나에 의해 – 배치되었지만 파일은복사됨, 아니다움직이는. 따라서 루트에 jar 파일의 복사본이 있고 lib/ 디렉터리에 jar 파일의 복사본이 있습니다. 우리는 루트 디렉토리의 복사본을 계속 덮어썼는데, 이것이 lib/에서 올바른 것을 사용하고 있었기 때문에 우리의 변경 사항이 무시된 이유입니다.