未解决的要求:导入包:com.google.api.client.auth.client.auth.oauth2;版本={1.30.0,2.0.0}
unresolved requiremnet: Import-package : com.google.api.client.auth.client.auth.oauth2; version={1.30.0,2.0.0}
liferay 7.2 版本
tomcat-9.0.17
gradle.build
compileOnly group: "com.google.api-client", name: "google-api-client", version: ':1.23.0'
compileOnly group: "com.google.oauth-client", name: "google-oauth-client-jetty", version: "1.23.0"
compileOnly group: "com.google.apis", name: "google-api-services-drive", version: "v3-rev110-1.23.0"
我需要使用 java 上传文件到 google 驱动器
当我启动服务器时,我遇到了这个错误
[![Liferay 控制台输出显示错误消息][1]][1]
2020-06-23 11:10:58.525 INFO [main][PortalContextLoaderListener:139] JVM arguments: -Dcatalina.base=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17 -Dcatalina.home=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.ssl=false -Dfile.encoding=UTF8 -Djava.endorsed.dirs=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/endorsed -Djava.io.tmpdir=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/temp -Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xmx2560m
2020-06-23 11:11:04.476 INFO [main][DialectDetector:159] Using dialect org.hibernate.dialect.MySQLDialect for MySQL 8.0
2020-06-23 11:11:08.647 INFO [main][ModuleFrameworkImpl:1468] Starting initial bundles
2020-06-23 11:11:08.694 ERROR [Framework Event Dispatcher: Equinox Container: 6c1b290f-406b-44be-9cec-6423b761abd2][Framework:93] FrameworkEvent ERROR
org.osgi.framework.BundleException: Could not resolve module: hero [2129]_ Unresolved requirement: Import-Package: com.google.api.client.auth.oauth2; version="[1.23.0,2.0.0)"_ [Sanitized]
at org.eclipse.osgi.container.Module.start(Module.java:444)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1682)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1662)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1624)
at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:264)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:188)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:447)
at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
at com.liferay.portal.bootstrap.ModuleFrameworkImpl.startFramework(ModuleFrameworkImpl.java:399)
at com.liferay.portal.module.framework.ModuleFrameworkUtilAdapter.startFramework(ModuleFrameworkUtilAdapter.java:100)
at com.liferay.portal.spring.context.PortalContextLoaderListener.contextInitialized(PortalContextLoaderListener.java:300)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4682)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5150)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:713)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1832)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1577)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
我参考这个 link https://developers.google.com/drive/api/v3/quickstart/java
有知道怎么解决的吗?
您是否将依赖项添加到文件夹 {LIFERAY_HOME}/tomcat-XX/lib/ext?通过 compileOnly,您告诉 gradle 依赖项将出现在运行时。
compileOnly
将使您的依赖项在编译时可用 仅。您将需要确保它们在运行时也可用(以及所有必需的传递依赖项)。
理想情况下,如果所有必需的依赖项都已经是 OSGi 包,您只需将它们放在 Liferay 的 deploy
文件夹中并将它们部署到运行时 - 它们将自动可用。
如果您的依赖项不是 OSGi 包:请检查您是否找到这些依赖项的分支,它们的区别仅在于在清单中添加了所需的 OSGi 指令。或者,不得已,实在不推荐,可以用compileInclude
。如果您在多个插件中执行此操作并期望它们都处理相同的数据,这将以更大的插件和潜在的冲突为代价,将依赖项与您的插件打包在一起:您将无法传递这些对象。
我在 Liferay 大学的(免费,需要注册)课程 OSGi Basics 中有一章正是关于这个主题的。但是主要的信息就是你上面看到的。
liferay 7.2 版本
tomcat-9.0.17
gradle.build
compileOnly group: "com.google.api-client", name: "google-api-client", version: ':1.23.0'
compileOnly group: "com.google.oauth-client", name: "google-oauth-client-jetty", version: "1.23.0"
compileOnly group: "com.google.apis", name: "google-api-services-drive", version: "v3-rev110-1.23.0"
我需要使用 java 上传文件到 google 驱动器
当我启动服务器时,我遇到了这个错误
[![Liferay 控制台输出显示错误消息][1]][1]
2020-06-23 11:10:58.525 INFO [main][PortalContextLoaderListener:139] JVM arguments: -Dcatalina.base=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17 -Dcatalina.home=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17 -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=8099 -Dcom.sun.management.jmxremote.ssl=false -Dfile.encoding=UTF8 -Djava.endorsed.dirs=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/endorsed -Djava.io.tmpdir=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/temp -Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=C:/Users/LENOVO/Desktop/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xmx2560m
2020-06-23 11:11:04.476 INFO [main][DialectDetector:159] Using dialect org.hibernate.dialect.MySQLDialect for MySQL 8.0
2020-06-23 11:11:08.647 INFO [main][ModuleFrameworkImpl:1468] Starting initial bundles
2020-06-23 11:11:08.694 ERROR [Framework Event Dispatcher: Equinox Container: 6c1b290f-406b-44be-9cec-6423b761abd2][Framework:93] FrameworkEvent ERROR
org.osgi.framework.BundleException: Could not resolve module: hero [2129]_ Unresolved requirement: Import-Package: com.google.api.client.auth.oauth2; version="[1.23.0,2.0.0)"_ [Sanitized]
at org.eclipse.osgi.container.Module.start(Module.java:444)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1682)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1662)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1624)
at org.eclipse.osgi.container.SystemModule.startWorker(SystemModule.java:264)
at org.eclipse.osgi.container.Module.doStart(Module.java:581)
at org.eclipse.osgi.container.Module.start(Module.java:449)
at org.eclipse.osgi.container.SystemModule.start(SystemModule.java:188)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:428)
at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:447)
at org.eclipse.osgi.launch.Equinox.start(Equinox.java:115)
at com.liferay.portal.bootstrap.ModuleFrameworkImpl.startFramework(ModuleFrameworkImpl.java:399)
at com.liferay.portal.module.framework.ModuleFrameworkUtilAdapter.startFramework(ModuleFrameworkUtilAdapter.java:100)
at com.liferay.portal.spring.context.PortalContextLoaderListener.contextInitialized(PortalContextLoaderListener.java:300)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4682)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5150)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:713)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1832)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1577)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
我参考这个 link https://developers.google.com/drive/api/v3/quickstart/java
有知道怎么解决的吗?
您是否将依赖项添加到文件夹 {LIFERAY_HOME}/tomcat-XX/lib/ext?通过 compileOnly,您告诉 gradle 依赖项将出现在运行时。
compileOnly
将使您的依赖项在编译时可用 仅。您将需要确保它们在运行时也可用(以及所有必需的传递依赖项)。
理想情况下,如果所有必需的依赖项都已经是 OSGi 包,您只需将它们放在 Liferay 的 deploy
文件夹中并将它们部署到运行时 - 它们将自动可用。
如果您的依赖项不是 OSGi 包:请检查您是否找到这些依赖项的分支,它们的区别仅在于在清单中添加了所需的 OSGi 指令。或者,不得已,实在不推荐,可以用compileInclude
。如果您在多个插件中执行此操作并期望它们都处理相同的数据,这将以更大的插件和潜在的冲突为代价,将依赖项与您的插件打包在一起:您将无法传递这些对象。
我在 Liferay 大学的(免费,需要注册)课程 OSGi Basics 中有一章正是关于这个主题的。但是主要的信息就是你上面看到的。