2011-10-13 4 views
3

저는 Altova MapForce를 사용하여 컴파일하는 동안 상당히 큰 JAR 파일을 포함하고 있습니다. JAR 파일은 약 65MB 였고 컴파일 작업이 잘 진행되었습니다. 더 많은 매핑을 추가해야하므로 JAR을 재생성하고 다시 빌드를 시도했습니다. JAR은 현재 약 80MB입니다.javac는 .jar가있는 클래스를 찾을 수 없습니다.

심볼이 있음을 확인하기 위해 JAR을 열었지만 이제는 모든 종류의 "심볼을 찾을 수 없습니다"라는 오류 메시지가 나타납니다! JAR 크기에 대한 상한선이 맞습니까? JAR 파일에는 75,000 개가 넘는 클래스가 있습니다.

이상한 점은 이클립스 자동 완성 기능이 새 JAR에서 잘 작동한다는 것입니다. 나는 건축 할 때서만이 과실을 얻는다.

차이점이 있으면 Ant를 사용하고 있습니다.

감사합니다,

브라이언

편집 : 다른 뭔가 이상한 : 나는 javac의에서 자세한 정보 출력에 돌았 다. 그것은 내가로드도의 모든 클래스 이전에 컴파일 오류를 받기 시작 보인다 :

[javac] [loading com\mycompany\myproject\*************************.class)] 
[javac] [loading com\mycompany\myproject\*************************.class)] 
[javac] [loading com\mycompany\myproject\*************************.class)] 
[javac] [loading com\mycompany\myproject\*************************.class)] 
[javac] [loading com\mycompany\myproject\*************************.class)] 
[javac] C:\Users\*************************.java:38: cannot find symbol 
[javac] symbol : class ************************* 
[javac] location: package com.mycompany.myproject.************************* 
[javac] import com.mycompany.myproject.*************************; 
[javac]             ^
[javac] [loading com\altova\TraceProvider.class(com\altova:TraceProvider.class)] 
[javac] [loading com\altova\io\StringInput.class(com\altova\io:StringInput.class)] 
[javac] [loading com\altova\io\StringOutput.class(com\altova\io:StringOutput.class)] 
+0

당신은 또한 –

+0

당신이 당신의 출력의 일부를 지워 나 정말 이름으로 생성되는 클래스가나요 .... 클래스 경로가 올바른지 확인하기 위해 개미와 자세한 출력을 설정할 수 있습니다 *** ***********************? – Perception

+0

무고한 사람을 보호하기 위해 밖으로 나왔습니다. –

답변

0

글쎄, 문제를 해결했습니다. 내가 한 모든 것은 JAR을 재생성하는 것이 었습니다 (나는 아무것도 변경하지 않았습니다!). 마치 우연한 것처럼 보입니다.

죄송합니다.

0

일식에서 작동하는 경우 등이지고있어 특정 컴파일러 오류 클래스 경로를 참조하는 것이 도움이 될 것이며, 개미가 아니라 클래스 패스 문제 일 수 있습니다. 즉, 개미 스크립트는 이클립스의 프로젝트 설정과 동일한 클래스 경로를 설정하지 않습니다.

나는 80MB보다 큰 jar 파일이있는 프로젝트에서 작업하며 jar 파일이나 그와 비슷한 클래스의 수에 상한선이 있다고 생각하지 않습니다. 항아리의 크기와 포함 된 클래스의 수는 문제가되지 않을 것입니다.

당신은 문제의 클래스를 가져 오기만하는 간단한 테스트 메인 프로그램을 작성하고 클래스 패스에있는 해당 jar 만 사용하여 javac로 컴파일 할 수 있습니다. 테스트가 작동하지 않으면 사용하는 항아리에 문제가 있다는 것을 알 수 있습니다. 작동하지 않는 경우, 개미 문제이거나 유사해야합니다.

개미 대상을 게시하고 개미의 자세한 출력을 게시 할 수 있습니까?

+0

방금 ​​더 많은 정보로 내 질문을 편집했습니다. 이견있는 사람? 로드하려는 JAR 파일은 javac 상세 출력에 따라 클래스 경로에 있습니다. –

+0

제 대답을 약간 편집했는데, 그냥 그 항아리와 몇 가지 수입품을하는 메인 클래스로 명령 줄에서 컴파일해야한다고 생각합니다. 다음 단계로, 당신의 개미 스크립트로 작업하는 클래스를 얻으십시오. –

0

Jenkins에서 Ant를 통해 빌드 할 때이 문제가 발생했습니다. 오류가 발생한 후에로드되지 않는 클래스가 표시됩니다. 자세한 출력에 "심볼을 찾을 수 없습니다"가 표시됩니다. 여러 번 재건을 시도했지만 기쁨은 없었습니다.

마지막으로, 찾을 수없는 클래스를 가져 오는 클래스로 이동하여 가져 오기 순서를 변경하여 문제 클래스가 맨 위에 가까워졌습니다. 이것은 일시적인 수정으로 누군가 Eclipse에서 가져 오기를 구성하자마자 Javac이로드하지 못하는 순서로 정렬됩니다. 우리는 수업의 이름을 변경해야 할 수도 있으므로 수입의 최상위에 정렬됩니다.

좀 더 조사한 결과, Java의 버그 7101822와 관련이있는 것으로 나타났습니다. Java의 버그를 열면 "심볼을 찾을 수 없습니다"라는 오류가 발생할 수 있습니다.

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7101822

+0

이것은 실제로 질문에 대답하지 않습니다. 다른 질문이있는 경우 [질문하기] (http://stackoverflow.com/questions/ask)를 클릭하여 질문 할 수 있습니다. 당신은 [현상금을 추가] (http://stackoverflow.com/help/privileges/set-bounties)하면 충분한 [평판] (http://stackoverflow.com/help/)이 일단이 질문에 더 많은 관심을 끌 수 있습니다. 평판). – Benesh

+1

동의하고 대답을 수정했습니다. –

+0

좋은 직장입니다. 누군가가 대답을하지 못하도록 삭제했다고 표시했지만, 제 도끼에서 그것을 제 시간에 편집 한 것으로 보입니다. "OK"로 표시하고 있습니다. – ArtOfWarfare

관련 문제