Maven Spring Boot项目出错(Error with Maven Spring Boot project)
我在虚拟框中,在组织的防火墙和代理后面,我看到这个错误,我一直试图解决这个问题从早上起来没有运气。 任何人都可以通过spring boot jar帮助我绕过这个问题。
我将网络连接设置为http和https的代理,具有Native,Direct和Manual
[DEBUG] Writing tracking file /home/.../.m2/repository/org/springframework/boot/spring-boot-starter-parent/1.3.2.RELEASE/spring-boot-starter-parent-1.3.2.RELEASE.pom.lastUpdated [ERROR] [ERROR] Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 @ [ERROR] The build could not read 1 project -> [Help 1] org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:422) at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:419) at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:410) at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:83) at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:491) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) [ERROR] [ERROR] The project demo:demo:0.0.1-SNAPSHOT (/home/.../Documents/workspace-sts-3.7.2.RELEASE/SpringBoot/pom.xml) has 1 error [ERROR] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 -> [Help 2] org.apache.maven.model.resolution.UnresolvableModelException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:197) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:246) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1000) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:800) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:329) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:469) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:438) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:401) at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:419) at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:410) at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:83) at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:491) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:193) ... 25 more Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355) at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581) at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) ... 29 more Caused by: org.apache.maven.wagon.TransferFailedException: Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1066) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:960) at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116) at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88) at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:560) at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:427) at org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:404) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350) ... 34 more Caused by: org.apache.maven.wagon.providers.http.httpclient.conn.ConnectTimeoutException: Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:138) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:219) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:86) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:108) at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:832) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:983) ... 43 more Caused by: java.net.ConnectException: Connection timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:239) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123) ... 53 more
I'm in virtualbox and behind the organization's firewall & proxy, I see this error, i have been trying to fix this issue since morning with no luck. Can anyone help me bypass this issue with spring boot jars.
I have the network connections set to the proxy for http and https with Native, Direct and Manual
[DEBUG] Writing tracking file /home/.../.m2/repository/org/springframework/boot/spring-boot-starter-parent/1.3.2.RELEASE/spring-boot-starter-parent-1.3.2.RELEASE.pom.lastUpdated [ERROR] [ERROR] Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 @ [ERROR] The build could not read 1 project -> [Help 1] org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:422) at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:419) at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:410) at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:83) at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:491) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) [ERROR] [ERROR] The project demo:demo:0.0.1-SNAPSHOT (/home/.../Documents/workspace-sts-3.7.2.RELEASE/SpringBoot/pom.xml) has 1 error [ERROR] Non-resolvable parent POM for demo:demo:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out and 'parent.relativePath' points at no local POM @ line 14, column 10 -> [Help 2] org.apache.maven.model.resolution.UnresolvableModelException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:197) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:246) at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:1000) at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:800) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:329) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:469) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:438) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:401) at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:419) at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:410) at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:83) at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:491) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:193) ... 25 more Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.3.2.RELEASE from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:43) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:355) at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:581) at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:249) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) ... 29 more Caused by: org.apache.maven.wagon.TransferFailedException: Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1066) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:960) at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116) at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88) at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:560) at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:427) at org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:404) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:447) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:350) ... 34 more Caused by: org.apache.maven.wagon.providers.http.httpclient.conn.ConnectTimeoutException: Connect to repo.maven.apache.org:443 [repo.maven.apache.org/23.235.40.215] failed: Connection timed out at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:138) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:318) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:219) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:86) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:108) at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:832) at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:983) ... 43 more Caused by: java.net.ConnectException: Connection timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:239) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:123) ... 53 more
原文:https://stackoverflow.com/questions/35071718
最满意答案
以下所有示例都使用
var str = "Hello, playground"
substring(to:String.Index)
这将从字符串开头的子字符串到指定的索引。
let index = str.index(str.startIndex, offsetBy: 5) str.substring(to: index) // Hello
如果您不明白
String.Index
,请参阅我以前的答案 。子字符串(来自:String.Index)
这将从指定的索引到字符串的末尾的子字符串。
let index = str.index(str.startIndex, offsetBy: 7) str.substring(from: index) // playground
子字符串(带:范围)
这只是给你一个基于你传入的范围的子串。一旦你有范围,这很容易。 尽管还不如旧的
NSRange
那么方便,但这对Swift 2系列来说是一个明显的改进。let start = str.index(str.startIndex, offsetBy: 7) let end = str.index(str.endIndex, offsetBy: -6) let range = start..<end str.substring(with: range) // play
“这是一个痛苦!我只需要使用
Int
索引扩展名。”在你做完之前,我建议你阅读Airspeed Velocity和Ole Begemann的“ Swift 3”中的优秀文章。 作者提供了几个理由来避免像一个集合一样处理String。
很容易忘记Character集合的问题( 示例 ):
字符串不是一个原因的集合 - 这不仅仅是因为Swift团队忘记了。 ...即使Character最好将字符序列组合为单一值,...仍然有一些情况下,按字符处理字符串会导致错误的结果。
为此,将字符串的字符串视图移动到一个属性, 字符 ,将其放在与其他集合视图类似的基础上: unicodeScalars , utf8和utf16 。 选择特定视图会提示您确认您正在进入“收集处理”模式,您应该考虑将要运行的算法的后果。
这使得编写效率低下的代码太容易了。 参考创建一个下标扩展,他们写道:
...正如使用扩展
String
使其成为集合一样,最好避免这种扩展。 你可能会试着开始编写代码:for i in 0..<5 { print(s[i]) }
但是这个代码看起来很简单,这是非常低效的。 每次使用整数访问时,都会运行一个O(n)函数来提升其起始索引。 在另一个线性循环中运行线性循环意味着这个for循环意外地是O(n2) - 随着字符串的长度增加,这个循环所花费的时间是二次增加的。
由于上述原因,我也不建议使用基于整数的字符串扩展。 但是,你可以自由地忽略这个建议。 如果您决定使用该扩展名,这个扩展名似乎相当不错。 (请务必彻底测试您使用的任何扩展名。)
Swift 4
好消息。 看起来Swift 4中的一些复杂性将会减少,包括使字符串再次符合Collection。 阅读这个和更多的细节。
All of the following examples use
var str = "Hello, playground"
Swift 4
Strings got a pretty big overhaul in Swift 4. When you get some substring from a String now, you get a
Substring
type back rather than aString
. Why is this? Strings are value types in Swift. That means if you use one String to make a new one, then it has to be copied over. This is good for stability (no one else is going to change it without your knowledge) but bad for efficiency.A Substring, on the other hand, is a reference back to the original String from which it came. Here is an image from the documentation illustrating that.
No copying is needed so it is much more efficient to use. However, imagine you got a ten character Substring from a million character String. Because the Substring is referencing the String, the system would have to hold on to the entire String for as long as the Substring is around. Thus, whenever you are done manipulating your Substring, convert it to a String.
let myString = String(mySubstring)
This will copy just the substring over and the old String can be garbage collected. Substrings (as a type) are meant to be short lived.
Another big improvement in Swift 4 is that Strings are Collections (again). That means that whatever you can do to a Collection, you can do to a String (use subscripts, iterate over the characters, filter, etc).
The following examples show how to get a substring in Swift.
Getting substrings
You can get a substring from a string by using subscripts or a number of other methods (for example,
prefix
,suffix
,split
). You still need to useString.Index
and not anInt
index for the range, though. (See my other answer if you need help with that.)Beginning of a string
You can use a subscript (note the Swift 4 one-sided range):
let index = str.index(str.startIndex, offsetBy: 5) let mySubstring = str[..<index] // Hello
or
prefix
:let index = str.index(str.startIndex, offsetBy: 5) let mySubstring = str.prefix(upTo: index) // Hello
or even easier:
let mySubstring = str.prefix(5) // Hello
End of a string
Using subscripts:
let index = str.index(str.endIndex, offsetBy: -10) let mySubstring = str[index...] // playground
or
suffix
:let index = str.index(str.endIndex, offsetBy: -10) let mySubstring = str.suffix(from: index) // playground
or even easier:
let mySubstring = str.suffix(10) // playground
Note that when using the
suffix(from: index)
I had to count back from the end by using-10
. That is not necessary when just usingsuffix(x)
, which just takes the lastx
characters of a String.Range in a string
Again we simply use subscripts here.
let start = str.index(str.startIndex, offsetBy: 7) let end = str.index(str.endIndex, offsetBy: -6) let range = start..<end let mySubstring = str[range] // play
Converting
Substring
toString
Don't forget, when you are ready to save your substring, you should convert it to a
String
so that the old string's memory can be cleaned up.let myString = String(mySubstring)
Using an
Int
index extension?I'm hesitant to use an
Int
based index extension after reading the article Strings in Swift 3 by Airspeed Velocity and Ole Begemann. Although in Swift 4, Strings are collections, the Swift team purposely hasn't usedInt
indexes. It is stillString.Index
. This has to do with Swift Characters being composed of varying numbers of Unicode codepoints. The actual index has to be uniquely calculated for every string.I have to say, I hope the Swift team finds a way to abstract away
String.Index
in the future. But until them I am choosing to use their API. It helps me to remember that String manipulations are not just simpleInt
index lookups.
相关问答
更多-
以下所有示例都使用 var str = "Hello, playground" substring(to:String.Index) 这将从字符串开头的子字符串到指定的索引。 let index = str.index(str.startIndex, offsetBy: 5) str.substring(to: index) // Hello 如果您不明白String.Index ,请参阅我以前的答案 。 子字符串(来自:String.Index) 这将从指定的索引到字符串的末尾的子字符串。 let ...
-
如何使用String.substringWithRange?(How do you use String.substringWithRange? (or, how do Ranges work in Swift?))[2022-04-12]
您可以使用substringWithRange方法。 它需要一个开始和结束String.Index。 var str = "Hello, playground" str.substringWithRange(Range(start: str.startIndex, end: str.endIndex)) //"Hello, playground" 要更改开始和结束索引,请使用advancedBy(n)。 var str = "Hello, playground" str.sub ... -
一个非常简单的解决方案是创建URLComponents ,分配查询部分和(平面)将查询项映射到它们的值 let string = "user_one_id=7&user_two_id=5" let components = URLComponents(string: "http://dummy.com?" + string) let userIDs = components?.queryItems?.flatMap{ $0.value } print(userIDs) let string = "user_ ...
-
将String或Substring作为参数的Swift方法(Swift method that takes either String or Substring as parameter)[2022-01-19]
使它通用 func isConsonant(ipa: T) -> Bool where T: StringProtocol { return "ptkʧfθsʃbdgʤvðzʒmnŋlwjhrʔɾ".contains(ipa) } 与其他StringProtocol方法相同,例如 func contains (_ other: T) -> Bool where T : StringProtocol func appending (_ aString: T) -> String whe ... -
如何从Swift 4中的字符串中提取未知子字符串?(How can I extract an unknown substring from a string in Swift 4?)[2022-01-11]
几个问题: 你有一个前瞻和后视,但没有任何实际上匹配任何字符,所以它永远不会匹配除空字符串之外的任何东西。 您没有正确地逃避前瞻中的括号。 你应该使用if let或guard let ,而不是! ,打开可选项。 否则,当遇到与模式不匹配的输入字符串时,您将遇到崩溃。 我不确定为什么你会期望print(strRange)输出文本。 strRange是一个范围,而不是字符串或子字符串。 此示例将解决您的问题: import Foundation let str = "[33376:7824459] Devic ... -
我推荐正则表达式。 模式搜索 文字“开放案例”, 一个可选的空格字符( \\s? ) 一个或多个数字。 ( \\d+ )被捕获 代码评估所有示例: let array = ["open case", "open case 1234", "open case id 3421", "open case no 9546", "open case number 5241", "open case 9552 open case", "open case open case 6842", "open case bla ...
-
Swift:获取字符串中的子字符串的开始索引[复制](Swift: get index of start of a substring in a string [duplicate])[2022-12-12]
您可以使用rangeOfString函数来查找并返回给定范围内给定字符串的第一次出现的范围,如下所示: var text = "Hello Victor Sigler" if let indexOf = text.rangeOfString("Victor")?.startIndex { println(indexOf) //6 } 我希望这对你有所帮助。 You can reach using the rangeOfString function that finds and returns t ... -
要回答您的直接问题:您可以搜索字符串的最后一个匹配项并从该位置获取子字符串: let path = "/Users/user/.../AppName/2017-07-07_21:14:52_0.jpeg" if let r = path.range(of: "/", options: .backwards) { let imageName = path.substring(from: r.upperBound) print(imageName) // 2017-07-07_21:14:52 ...
-
只是一个快速的想法,可能有一些更简单的方法来做到这一点: let myInfo = "Dana
Dana CEO 0123456 01234567 dana@gmail.com " let components = myInfo.components(separatedBy: CharacterSet(charactersIn: "<>")) let values = components.enumerated().filter { $ ... -
您的错误来自于尝试advance endIndex 。 但是有点简单呢? (斯威夫特2) var first = str1.startIndex var last = advance(first, 20 - 1, str1.endIndex) while last != str1.endIndex { primers.append(str1[first++ ... last++]) } print("\n".join(primers)) // output: // ACAAGATGCCATTG ...