2017-05-12 2 views
0

누구나 Java Nashorn HttpEntity에서 이와 같은 클래스를 선언하도록 도울 수 있습니까? 다음은 실행하려는 샘플 스크립트입니다. Java Nashorn 일반 클래스 선언

가 code--

var JavascriptValidator = Java.type('ph.com.bdo.tbg.icos.validation.form.JavascriptValidator'); 
var HttpHeaders = Java.type('org.springframework.http.HttpHeaders'); 
var DateTimeFormatter = Java.type('java.time.format.DateTimeFormatter'); 
var Arrays = Java.type('java.util.Arrays'); 
var Date = Java.type('java.util.Date'); 
var MediaType = Java.type('org.springframework.http.MediaType'); 
var HttpEntity = Java.type('org.springframework.http.HttpEntity'); 
var UriComponentsBuilder = Java.type('org.springframework.web.util.UriComponentsBuilder'); 
var RestTemplate = Java.type('org.springframework.web.client.RestTemplate'); 

--This 어딘가에 내 선언을 --This 것은 내가

function init(){ 
      var headers = new HttpHeaders(); 
      headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); 
      headers.add("username", username); 
      headers.add("password", password); 

      var entity = new HttpEntity<String>(headers); 

      // more code... 
     } 

내가 오류 - 다음 얻을 --Then running--입니다 샘플 기능입니다 -

FAILED: testFinalValidate 
<eval>:73 TypeError: Can not create new object with constructor org.springframework.http.HttpEntity with the passed arguments; they do not match any of its method signatures. 
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) 
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213) 
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185) 
at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172) 
at jdk.nashorn.internal.runtime.linker.NashornStaticClassLinker.checkNullConstructor(NashornStaticClassLinker.java:108) 
at jdk.nashorn.internal.runtime.linker.NashornStaticClassLinker.getGuardedInvocation(NashornStaticClassLinker.java:96) 
at jdk.internal.dynalink.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(CompositeTypeBasedGuardingDynamicLinker.java:176) 
at jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124) 
at jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:154) 
at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:253) 
at jdk.nashorn.internal.scripts.Script$Recompilation$2$2171$\^eval\_.init(<eval>:73) 
at jdk.nashorn.internal.scripts.Script$Recompilation$1$1772A$\^eval\_.finalValidate(<eval>:59) 
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:639) 
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494) 
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393) 
at jdk.nashorn.api.scripting.ScriptObjectMirror.call(ScriptObjectMirror.java:117) 
at com.bdo.icos.util.BaseTest.runScript(BaseTest.java:194) 
at com.bdo.icos.validation.SmartMoneyTest.testFinalValidate(SmartMoneyTest.java:130) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86) 
at org.testng.internal.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:54) 
at org.testng.internal.InvokeMethodRunnable.run(InvokeMethodRunnable.java:44) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

해당 Java 구문으로 변환하면 코드가 컴파일되어 성공적으로 실행됩니다.

답변

0

org.springframework.http.HttpEntity 클래스에 올바른 public 생성자가 HttpHeaders를 허용합니까? public 생성자와 메서드 만 스크립트에서 호출 할 수 있습니다. protected/package-private/private 멤버는 액세스 할 수 없습니다.

var entity = new HttpEntity<String>(headers); 

작동하지 않습니다 또한

이 syntax->는 답변

+0

안녕 덕분에 (자바 코드에서 붙여 넣기 절단 나타납니다). 네, 올바른 public 생성자를 사용하고 있습니다. 해결 방법 나는 "var entity = new HttpEntity (headers)"코드가 여전히 작동하므로 다음 코드를 사용하고 있습니다. 그러나 "new HttpEntity ()"의 문자열 부분에 해당하는 구문이 없음을 의미합니다. –