업데이트 10 월 30 일, 질문 하단을 참조하십시오.Domino Java Agent에서 SBT를 사용하려고 시도하면 NoSuchMethodError : org/apache/http/protocol/BasicHttpContext와 함께 실패합니다. <init>() V
SBT의 sbt.sample.app GetAllCommunitiesApp.java를 기반으로 Eclipse에서 독립 실행 형 Java 응용 프로그램의 작업 예제를 만들었습니다. 내 유일한 변경은 수동으로 BasicEndpoint를 만들어서 관리되는 Bean의 사용을 건너 뛰도록하는 것입니다. 끝점 구성 (따라서 managed-beans.xml 읽기).이 말처럼 Eclipse가 멋지게 작동합니다.
코드를 로컬 Notes Java 에이전트 (에이전트가 로컬 데이터베이스에 배치 됨)로 이동하면, 먼저 가장 먼저 SBT jar 파일을 C : \ Program Files (x86) \ IBM \ Lotus \ Notes \ jvm \ lib \ ext 카탈로그에 복사했습니다.이 파일의 목록은 아래를 참조하십시오. 다음 스택 추적;
StackOverflow에 다른 사이트를 검색 59,868,836,511,984,161,953,210Exception in thread "AgentThread: JavaAgent" java.lang.NoSuchMethodError: org/apache/http/protocol/BasicHttpContext.<init>()V
at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:285)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:851)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at com.ibm.sbt.services.client.ClientService.executeRequest(ClientService.java:1043)
at com.ibm.sbt.services.client.ClientService._xhr(ClientService.java:1006)
at com.ibm.sbt.services.client.ClientService.execRequest(ClientService.java:972)
at com.ibm.sbt.services.client.ClientService.xhr(ClientService.java:932)
at com.ibm.sbt.services.client.ClientService.get(ClientService.java:808)
at com.ibm.sbt.services.client.ClientService.get(ClientService.java:804)
at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:350)
at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:372)
at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:325)
at com.ibm.sbt.services.client.base.BaseService.getEntities(BaseService.java:185)
at com.ibm.sbt.services.client.connections.communities.CommunityService.getMyCommunities(CommunityService.java:265)
at com.ibm.sbt.services.client.connections.communities.CommunityService.getMyCommunities(CommunityService.java:249)
at no.tine.sbt.SBTCommunityHelper.getMyCommunities(SBTCommunityHelper.java:36)
at JavaAgent.NotesMain(JavaAgent.java:27)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
다른 사람이 혼합 된 아파치 HttpClient를을의 버전과 비슷한 문제를 볼 것을 보여줍니다 (HttpClient를 4.0.1을 사용하고있다 일반적으로 사람들, 그리고 문제는 멀리로 대체 갔다 HttpClient를 4.1). SBT에는 httpclient-4.2.1.jar가 포함되어 있는데이 파일은 Lotus Notes의 C : \ Program Files (x86) \ IBM \ Lotus \ Notes \ jvm \ lib \ ext에 복사 한 파일입니다.
로터스 노츠 (Lotus Notes)가 어떻게 든 어딘가에서 다른 httpclient를 사용하고있는 것처럼 보입니다. 어쩌면 구형 인 것 같습니다.
그래서 질문은 - Notes가 SBT 항아리를 어떤 식 으로든 사용할 수있게 할 수 있습니까? 어떤 아이디어?
참조를 위해, C : \ Program Files (x86) \ IBM \ Lotus \ Notes \ jvm \ lib \ ext에 복사 한 SBT jar 파일은 다음과 같습니다.
com.ibm.commons-1.0.0.20131024-1349.jar
com.ibm.commons.runtime-1.0.0.20131024-1349.jar
com.ibm.commons.xml-1.0.0.20131024-1349.jar
com.ibm.sbt.core-1.0.0.20131024-1349.jar
com.ibm.sbt.playground-1.0.0.20131024-1349.jar
apache-mime4j-0.6.jar
com.ibm.sbt.javamail-1.4.5.jar
commons-codec-1.3.jar
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
commons-logging-1.1.1.jar
httpclient-4.2.1.jar
httpcore-4.2.1.jar
httpmime-4.2.1.jar
2013 년 10 월 30 일 UPDATE : 2013 년 10 월 30 일 UPDATE : 동일한 줄을 따라 가려고하는 샘플을 발견했습니다. 다음 코드는 Apache.org HttpClient 4.2 예제 코드에서 직접 작성한 핵심 코드가 포함 된 완전한 Notes Java Agent입니다. 이것 역시 NoSuchMethodError를 생성하며, SBT보다 디버깅이 쉽습니다.
/*
* Sample retrieved from
* http://hc.apache.org/httpcomponents-client-4.2.x/httpclient/examples/org/apache/http/examples/client/ClientWithResponseHandler.java
*/
import java.io.IOException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
HttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet("http://www.google.com/");
System.out.println("executing request " + httpget.getURI());
// Create a response handler
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println("----------------------------------------");
System.out.println(responseBody);
System.out.println("----------------------------------------");
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
// Notes Exception catcher
} catch(Exception e) {
e.printStackTrace();
}
}
}
BTW; 나는 httpclient, httpcore 등을 SBT의 com.ibm.sbt.libs.domino \ lib-catalog에서 파일로 대체하려고 시도했다. 불행히도 같은 결과 –