【问题标题】:Why isn't this SalesforceCanvasFrameworkSDK “Hello World” application for SFDC Canvas working?为什么这个用于 SFDC Canvas 的 SalesforceCanvasFrameworkSDK “Hello World”应用程序不工作?
【发布时间】:2015-02-11 03:04:16
【问题描述】:

目前我正在查看“第 3 章:快速入门--高级”的 Force.com Canvas Developer's Guide

我已经从 GitHub 成功克隆了 SalesforceCanvasFrameworkSDK,现在正在尝试在本地运行 Web 应用程序。

构建成功,密钥库已创建。但是,当我执行 target\bin\webapp.bat 时,出现以下错误:

错误:无法找到或加载主类 Main

发现主类好像在C:\SalesforceCanvasFrameworkSDK\target\classes,我修改了.bat文件,把这个包含在CLASSPATH中:

set CLASSPATH="C:\SalesforceCanvasFrameworkSDK\target\classes;%BASEDIR%"\etc;"%REPO%"\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar;"%REPO%"\org\mortbay\jetty\jsp-2.1-glassfish\2.1.v20100127\jsp-2.1-glassfish-2.1.v20100127.jar;"%REPO%"\org\eclipse\jdt\core\compiler\ecj\3.5.1\ecj-3.5.1.jar;"%REPO%"\org\mortbay\jetty\jsp-api-2.1-glassfish\2.1.v20100127\jsp-api-2.1-glassfish-2.1.v20100127.jar;"%REPO%"\ant\ant\1.6.5\ant-1.6.5.jar;"%REPO%"\org\codehaus\jackson\jackson-mapper-asl\1.9.0\jackson-mapper-asl-1.9.0.jar;"%REPO%"\org\codehaus\jackson\jackson-core-asl\1.9.0\jackson-core-asl-1.9.0.jar;"%REPO%"\org\eclipse\jetty\jetty-webapp\7.6.0.v20120127\jetty-webapp-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-xml\7.6.0.v20120127\jetty-xml-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-util\7.6.0.v20120127\jetty-util-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-servlet\7.6.0.v20120127\jetty-servlet-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-security\7.6.0.v20120127\jetty-security-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-server\7.6.0.v20120127\jetty-server-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-continuation\7.6.0.v20120127\jetty-continuation-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-http\7.6.0.v20120127\jetty-http-7.6.0.v20120127.jar;"%REPO%"\org\eclipse\jetty\jetty-io\7.6.0.v20120127\jetty-io-7.6.0.v20120127.jar;"%REPO%"\asm\asm\3.2\asm-3.2.jar;"%REPO%"\org\json\json\20080701\json-20080701.jar;"%REPO%"\commons-httpclient\commons-httpclient\3.1\commons-httpclient-3.1.jar;"%REPO%"\commons-logging\commons-logging\1.0.4\commons-logging-1.0.4.jar;"%REPO%"\commons-codec\commons-codec\1.4\commons-codec-1.4.jar;"%REPO%"\sfdc\sfdc-canvas-sdk\1.0-SNAPSHOT\sfdc-canvas-sdk-1.0-SNAPSHOT.jar

这使批处理文件能够执行和启动 Jetty。

但是,当我尝试访问 https://localhost:8443/examples/hello-world/index.jsp 时,在浏览器警告消息过后,我得到一个 HTTP ERROR 500 页面:

HTTP 错误 500

访问 /examples/hello-world/index.jsp 时出现问题。原因:

PWC6033: Unable to compile class for JSP

PWC6199:生成的 servlet 错误:java.util.Map$Entry 类型不能 得到解决。它是从所需的 .class 文件中间接引用的

原因:

org.apache.jasper.JasperException: PWC6033: 无法编译类 用于 JSP

PWC6199:生成的 servlet 错误:java.util.Map$Entry 类型不能 得到解决。它是从所需的 .class 文件中间接引用的

在 org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:123) 在 org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:296) 在 org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:376) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:437) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 在 org.eclipse.jetty.server.Server.handle(Server.java:349) 在 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449) 在 org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 在 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 在 org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 在 org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 在 org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) 在 java.lang.Thread.run(Thread.java:745) Powered by Jetty://

同时,我的 Jetty 服务器因以下原因而死机:

错误:编译错误 org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException 在 org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.(ClassFileReader.java:372) 在 org.apache.jasper.compiler.JDTJavaCompiler$1.findType(JDTJavaCompiler.java:367) 在 org.apache.jasper.compiler.JDTJavaCompiler$1.findType(JDTJavaCompiler.java:324) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:102) 在 org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49) 在 org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1188) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromVariantTypeSignature(LookupEnvironment.java :1244) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeArgumentsFromSignature(LookupEnvironment.java:1 031) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1193) 在 org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethod(BinaryTypeBinding.java:495) 在 org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethods(BinaryTypeBinding.java:577) 在 org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.cachePartsFrom(BinaryTypeBinding.java:327) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:640) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:619) 在 org.eclipse.jdt.internal.compiler.Compiler.accept(Compiler.java:295) 在 org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:133) 在 org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:183) 在 org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:465) 在 org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:519) 在 org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:368) 在 org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:444) 在 org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:752) 在 org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:464) 在 org.apache.jasper.compiler.JDTJavaCompiler.compile(JDTJavaCompiler.java:503) 在 org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:368) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:437) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 在 org.eclipse.jetty.server.Server.handle(Server.java:349) 在 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449) 在 org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 在 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 在 org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 在 org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 在 org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) 在 java.lang.Thread.run(Thread.java:745) 错误:编译文件时出错: C:\Users\Brian_Kessler@epam.com\AppData\Local\Temp\jetty-0.0.0.0-8443-webapp-_-any-\jsp\org\apa che\jsp\examples\hello_002dworld\index_jsp.java 2014-12-11 15:35:48.106:WARN:oejs.ServletHandler:/examples/hello-world/index.jsp org.apache.jasper.JasperException:PWC6033:无法编译类 对于 JSP||PWC6199:生成的 servlet 错误:|Java 类型 .util.Map$Entry 无法解析。它间接引用自 所需的.class 文件|| 在 org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:123) 在 org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:296) 在 org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:376) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:437) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 在 org.eclipse.jetty.server.Server.handle(Server.java:349) 在 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449) 在 org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47) 在 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 在 org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66) 在 org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254) 在 org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:665) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) 在 java.lang.Thread.run(Thread.java:745)

如果相关:

操作系统:Windows 7 爪哇:1.8.0_25 Maven:3.2.2

任何解决此问题的帮助将不胜感激!

【问题讨论】:

  • 你有没有解决过这个问题@brian-kessler?我正在调查一个类似的问题,目前怀疑该问题是 Jetty v8 和 Java 8 之间的不兼容,但如果您发现了原因,很高兴听到它。
  • @MattSheppard,我不记得曾经找到解决方案或解决方法。对不起。
  • 不用担心 - 感谢您的跟进。我已经看得更远了,我相当肯定在我的情况下需要升级到 Jetty 9,但到目前为止我还没有让 JSP 在 Jetty 9 中工作。

标签: exception canvas salesforce jetty classpath


【解决方案1】:

我能够在 MacOS Sierra 10.13.6 上按如下方式解决此问题

问题似乎出在 Java 8 上,因此如果您可以使用 Java 7 开始整个安装,您将节省大量时间。就我而言,我已经安装了 Java 8,所以我必须执行以下操作:

1- 从 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 安装 java 7。您必须创建一个 Oracle 帐户,它是免费的。

2- 确认两个版本的 java 都在运行v

Pablos-MacBook-Pro:SalesforceCanvasFrameworkSDK pabloalvarez$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_191, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
    1.7.0_80, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

3- 然后

export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_80`
export JAVACMD=`/usr/libexec/java_home -v 1.7.0_80`

确认 Java 7 现在是默认版本

Pablos-MacBook-Pro:SalesforceCanvasFrameworkSDK pabloalvarez$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

5- 然后

export JAVACMD=/usr/bin/java

6- 终于

Pablos-MacBook-Pro:SalesforceCanvasFrameworkSDK pabloalvarez$ sh target/bin/webapp
Looks like we are NOT running on heroku.
2019-01-14 10:54:48.557:INFO:oejs.Server:jetty-7.6.0.v20120127
2019-01-14 10:54:48.863:INFO:oejsh.ContextHandler:started o.e.j.w.WebAppContext{/,file:/Users/pabloalvarez/SalesforceCanvasFrameworkSDK/src/main/webapp/}
2019-01-14 10:54:49.252:INFO:oejus.SslContextFactory:Enabled Protocols [SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2] of [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2]

祝你好运!

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多