警告:无法从类加载器层次结构中扫描<> .jar。 FileNotFoundException异常

时间:2017-07-27 21:42:05

标签: java google-app-engine build maven-3 dependency-management

所以我有我的项目: https://github.com/Leejjon/Blindpool

当我尝试通过IntelliJ中的Google App Engine部署运行配置将其发布到应用引擎时,它运行良好并且部署也很好。

但是我收到很多警告(这只是一个):

void test() {
    using (var t = new TransactionScope())
    using (var c = new SqlConnection(constring))
    {
        c.Open();
        try 
        {
             using (var s = new SqlCommand("Update table SET column1 = 1");
             {
                   s.ExecuteScalar();  // If this fails
             }
             t.Complete();
        }
        catch (Exception ex)
        {
             SaveErrorToDB(ex, c);  // I don't want to run this in the same transaction
        }
    }
}

void SaveErrorToDB(Exception ex, SqlConnection c) {
      using (var cmd = new SqlCommand("INSERT INTO ErrorLog (msg) VALUES (" + ex.Message + ", c))
      {
            cmd.ExecuteNonQuery();
      }
}

然后,许多其他jar例如javax.annotation-api-1.2.jar,asm-commons-5.0.1.jar,asm-5.0.1.jar,javax.transaction-api-1.2也会发生同样的异常.jar,javax.mail.glassfish-1.4.1.v201005082020.jar,org.apache.taglibs.taglibs-standard-spec-1.2.5.jar,org.apache.taglibs.taglibs-standard-impl-1.2.5 .jar和大约30人。

但部署仍在继续:

Deploying '[2017-07-27 23:15:04] Maven build: Blindpool. Project: blindepoule. Version: 6'...
Created temporary staging directory: C:\Users\Leejjon\AppData\Local\Temp\gae-staging-blindepoule684
Reading application configuration data...
jul 27, 2017 11:15:06 PM com.google.apphosting.utils.config.IndexesXmlReader readConfigXml
INFO: Successfully processed C:\Users\Leejjon\IdeaProjects\Blindpool\target\blindpool-1.0-SNAPSHOT\WEB-INF\appengine-generated\datastore-indexes-auto.xml


Beginning interaction for module default...
0% Scanning for jsp files.
0% Compiling jsp files.
jul 27, 2017 11:15:07 PM org.apache.tomcat.util.scan.StandardJarScanner scan
WARNING: Failed to scan [file:/C:/Users/Leejjon/AppData/Local/Google/Cloud%2520SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/lib/impl/appengine-api-labs.jar] from classloader hierarchy
java.io.FileNotFoundException: C:\Users\Leejjon\AppData\Local\Google\Cloud%20SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\java\lib\impl\appengine-api-labs.jar (The system cannot find the path specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:103)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:109)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:47)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:36)
at org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan(TldScanner.java:301)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:313)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:245)
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:106)
at org.apache.jasper.JspC.initServletContext(JspC.java:1535)
at org.apache.jasper.JspC.execute(JspC.java:1378)
at com.google.appengine.tools.admin.LocalJspC.main(LocalJspC.java:33)

你可以看到它刚刚完成,我是否应该担心摆脱警告?

更新:发现谷歌希望我们转向使用云工具appengine maven插件: https://cloud.google.com/appengine/docs/standard/java/tools/migrate-maven

如果我使用推荐的设置并运行jul 27, 2017 11:15:08 PM org.apache.jasper.servlet.TldScanner scanJars INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. jul 27, 2017 11:15:08 PM org.apache.jasper.JspC processFile INFO: Built File: \index.jsp 2017-07-27 23:15:10.115:INFO::main: Logging initialized @175ms 2017-07-27 23:15:11.051:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=501ms 0% Generated git repository information file. Success. Temporary staging for module default directory left in C:\Users\Leejjon\AppData\Local\Temp\gae-staging-blindepoule684 Services to deploy: descriptor: [C:\Users\Leejjon\AppData\Local\Temp\gae-staging-blindepoule684\app.yaml] source: [C:\Users\Leejjon\AppData\Local\Temp\gae-staging-blindepoule684] target project: [blindepoule] target service: [default] target version: [6] target url: [https://blindepoule.appspot.com] Beginning deployment of service [default]... Some files were skipped. Pass `--verbosity=info` to see which ones. You may also view the gcloud log file, found at [C:\Users\Leejjon\AppData\Roaming\gcloud\logs\2017.07.27\23.15.12.062000.log]. #============================================================# #= Uploading 4 files to Google Cloud Storage =# #============================================================# File upload done. Updating service [default]... ..............done. Updating service [default]... .Waiting for operation [apps/blindepoule/operations/5106d598-f760-4079-a358-4b2148c622cf] to complete... ..done. done. Deployed service [default] to [https://blindepoule.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse '[2017-07-27 23:15:04] Maven build: Blindpool. Project: blindepoule. Version: 6' has been deployed successfully. ,我会得到与之前在IntelliJ中完全相同的错误。因此,使用旧的appengine maven插件可以正常工作,但这与Google推荐的相反。

1 个答案:

答案 0 :(得分:2)

您似乎需要在 <plugins> ... <plugin> <groupId>com.google.appengine</groupId> <artifactId>appengine-maven-plugin</artifactId> <!--<version>${appengine.target.version}</version>--> <version>1.8.3</version> <configuration> </configuration> </plugin> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <!--<version>${jetty.maven.plugin}</version>--> <version>9.4.0.v20161208</version> </plugin> </plugins> 中正确管理版本。在指定版本下,某些插件无法再访问。

我试过了:

Connected to the target VM, address: '127.0.0.1:64711', transport: 'socket'
Jul 28, 2017 1:06:54 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Connected to server
Jul 27, 2017 10:06:54 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: jetty-6.1.x
Jul 27, 2017 10:06:55 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Started SelectChannelConnector@localhost:8080
Jul 27, 2017 10:06:55 PM com.google.appengine.tools.development.AbstractModule startup
INFO: Module instance default is running at http://localhost:8080/
Jul 27, 2017 10:06:55 PM com.google.appengine.tools.development.AbstractModule startup
INFO: The admin console is running at http://localhost:8080/_ah/admin
Jul 28, 2017 1:06:55 AM com.google.appengine.tools.development.DevAppServerImpl doStart
INFO: Dev App Server is now running

并且我已经毫无问题地启动了服务器。

插件和依赖版本可能不同(因为转移的版本或清理存储库)。您可以使用我已指定的插件版本,或者如果您希望使用相同版本的依赖项和插件,则可以使用更多版本。

{
    "name": "HttpLinkedService",
    "properties":
    {
        "type": "Http",
        "typeProperties":
        {
            "authenticationType": "Anonymous",
            "url" : "https://en.wikipedia.org/wiki/"
        }
    }
}