# trustAnchors parameter must be non-empty

**URL:** <https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314>\
**Category:** API and Webhooks\
**Created:** [May 19, 2020, 2:56pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314 "2020-05-19T14:56:51Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rahul.shinde](https://avatars.discourse-cdn.com/v4/letter/r/34f0e0/32.png) [@rahul.shinde](https://devforum.zoom.us/u/rahul.shinde)\
**Post date:** [May 19, 2020, 2:56pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/1 "2020-05-19T14:56:52Z")

</div>

**Description**  
A clear and concise description of what the question is.  
POST /v1/user/getbyemail

**Error**  
The full error message or issue you are running into.  
May 19, 2020 10:53:25 AM org.apache.catalina.core.StandardWrapperValve invoke  
INFO: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty  
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:131)  
at com.sun.jersey.api.client.Client.handle(Client.java:616)  
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:559)  
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:72)  
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:502)  
at com.zoom.Utilities.setMeeting(Utilities.java:156)  
at com.general.InsertController.doPost(InsertController.java:270)  
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)  
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)  
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)  
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
at com.upside.lms.servlets.GlobalFilter.doFilter(GlobalFilter.java:182)  
at com.upside.lms.servlets.GlobalFilter.doFilter(GlobalFilter.java:45)  
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
at com.general.FilterDemo.doFilter(FilterDemo.java:188)  
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)  
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)  
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:208)  
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)  
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)  
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)  
at com.googlecode.psiprobe.Tomcat70AgentValve.invoke(Tomcat70AgentValve.java:44)  
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)  
at org.apache.catalina.valves.CrawlerSessionManagerValve.invoke(CrawlerSessionManagerValve.java:180)  
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)  
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)  
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)  
at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:197)  
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)  
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
at java.lang.Thread.run(Thread.java:745)  
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty  
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)  
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)  
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1862)  
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1845)  
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1366)  
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)  
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)  
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)  
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1092)  
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)  
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler$1$1.getOutputStream(URLConnectionClientHandler.java:203)  
at com.sun.jersey.api.client.CommittingOutputStream.commitWrite(CommittingOutputStream.java:117)  
at com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutputStream.java:89)  
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)  
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)  
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)  
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)  
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)  
at java.io.BufferedWriter.flush(BufferedWriter.java:254)  
at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:191)  
at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128)  
at com.sun.jersey.core.impl.provider.entity.BaseFormProvider.writeTo(BaseFormProvider.java:109)  
at com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider.writeTo(FormMultivaluedMapProvider.java:99)  
at com.sun.jersey.core.impl.provider.entity.FormMultivaluedMapProvider.writeTo(FormMultivaluedMapProvider.java:59)  
at com.sun.jersey.api.client.TerminatingClientHandler.writeRequestEntity(TerminatingClientHandler.java:305)  
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.\_invoke(URLConnectionClientHandler.java:182)  
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:129)  
… 33 more  
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty  
at sun.security.validator.PKIXValidator.(PKIXValidator.java:90)  
at sun.security.validator.Validator.getInstance(Validator.java:179)  
at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:314)  
at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:173)  
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:186)  
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)  
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)  
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)  
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)  
at sun.security.ssl.Handshaker.process\_record(Handshaker.java:849)  
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)  
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)  
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)  
… 55 more  
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty  
at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)  
at java.security.cert.PKIXParameters.(PKIXParameters.java:120)  
at java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104)  
at sun.security.validator.PKIXValidator.(PKIXValidator.java:88)  
… 67 more

**Which App Type (OAuth / Chatbot / JWT / Webhook)?**  
Knowing the endpoint/s can help us to identify your issue faster. Please link the ones you need help/have a question with.

**Which Endpoint/s?**  
Knowing the API endpoint/s can help us to identify your issue faster. Please link the ones you need help/have a question with.

**How To Reproduce (If applicable)**  
Steps to reproduce the behavior:

1. Request URL / Headers (without credentials) / Body  
curl [https://api.zoom.us/v1/user/getbyemail](https://api.zoom.us/v1/user/getbyemail)   
-X POST   
-d api\_key=your\_api\_key   
-d api\_secret=your\_api\_secret   
-d [email=user@company.com](mailto:email=user@company.com)   
-d login\_type=100
2. See error

**Screenshots (If applicable)**  
If applicable, add screenshots to help explain your problem.

**Additional context**  
Add any other context about the problem here.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [May 22, 2020, 4:47pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/2 "2020-05-22T16:47:02Z")

</div>

Hey @rahul.shinde,

Please use the [V2 API](https://marketplace.zoom.us/docs/api-reference/zoom-api/users/user).

> **[Your Guide to Migrating From v1 to v2 APIs](https://medium.com/zoom-developer-blog/your-guide-to-migrating-from-v1-to-v2-apis-d4ded0474c04)**
>
> Zoom has grown exponentially over the last few years especially with our APIs. We started with our v1 APIs a couple years ago and now have…

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![rahul.shinde](https://avatars.discourse-cdn.com/v4/letter/r/34f0e0/32.png) [@rahul.shinde](https://devforum.zoom.us/u/rahul.shinde)\
**Post date:** [May 27, 2020, 2:33pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/3 "2020-05-27T14:33:00Z")

</div>

Thanks, @tommy. we are working on this. but I have one issue regarding JWT token generating using java.

Do you have any idea regarding this?

**Java Code**  
import io.jsonwebtoken.JwtBuilder;  
import io.jsonwebtoken.Jwts;  
import io.jsonwebtoken.SignatureAlgorithm;

```
import java.util.Date;
import java.util.UUID;
 
@SuppressWarnings("deprecation")
	public String createJWTToken() {
		String id = UUID.randomUUID().toString().replace("-", "");
		//The JWT signature algorithm we will be using to sign the token
	    final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
	    long nowMillis = System.currentTimeMillis();
	    Date now = new Date(nowMillis);
	     //We will sign our JWT with our ApiKey secret
	   //Let's set the JWT Claims
	    JwtBuilder builder = null;
		try {
			builder = Jwts.builder().setId(id).setHeaderParam("typ", "JWT")
			                            .setIssuedAt(now)
			                            .setSubject("")
			                            .setIssuer(API_KEY)
			                            .signWith(signatureAlgorithm, SECRET_KEY.getBytes("UTF-8"));
		    //if it has been specified, let's add the expiration
		    if (ttlMillis >= 0) {
		    long expMillis = nowMillis + ttlMillis;
		        Date exp = new Date(expMillis);
		        builder.setExpiration(exp);
		    }
		   
		} catch (Exception e) {
			e.printStackTrace();
		}
		return builder.compact();//Builds the JWT and serializes it to a compact, URL-safe string
	}

```

**Below are the exception for JWT token creation**

> javax.servlet.ServletException: Servlet execution threw an exception  
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:328)
> 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> 
> at com.test.lms.servlets.GlobalFilter.doFilter(GlobalFilter.java:204)
> 
> at com.test.lms.servlets.GlobalFilter.doFilter(GlobalFilter.java:48)
> 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.general.FilterDemo.doFilter(FilterDemo.java:312)
> 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> 
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> 
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
> 
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
> 
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> 
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
> 
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
> 
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
> 
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> 
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
> 
> at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
> 
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
> 
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> 
> at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: io/jsonwebtoken/Jwts
> 
> at com.zoom.JWTTokenGeneration.createJWTToken(JWTTokenGeneration.java:31)
> 
> at com.zoom.Utilities.setMeeting(Utilities.java:571)
> 
> at com.general.InsertController.doPost(InsertController.java:377)
> 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
> 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
> 
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) … 22 more Caused by: java.lang.ClassNotFoundException: io.jsonwebtoken.Jwts
> 
> at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
> 
> at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546) … 28 more

---

<div class="post-metadata">

**Author:** ![rahul.shinde](https://avatars.discourse-cdn.com/v4/letter/r/34f0e0/32.png) [@rahul.shinde](https://devforum.zoom.us/u/rahul.shinde)\
**Post date:** [May 28, 2020, 6:53am UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/4 "2020-05-28T06:53:50Z")

</div>

@tommy : The jar present on a different path on my machine and now jar is placed in classes/lib folder. works perfectly. Once again thanks for the help 😉

---

<div class="post-metadata">

**Author:** ![michael.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/michael.zoom/32/37213_2.png) [@michael.zoom](https://devforum.zoom.us/u/michael.zoom)\
**Post date:** [June 1, 2020, 10:15pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/5 "2020-06-01T22:15:13Z")

</div>

@rahul.shinde let us know if there’s anything we can help with in the transition to v2!

---

<div class="post-metadata">

**Author:** ![DeveloperBot](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/developerbot/32/12632_2.png) [@DeveloperBot](https://devforum.zoom.us/u/DeveloperBot)\
**Post date:** [August 21, 2020, 9:39pm UTC](https://devforum.zoom.us/t/trustanchors-parameter-must-be-non-empty/18314/6 "2020-08-21T21:39:28Z")

</div>

Closed on August 21, 2020, 9:39pm UTC


