java VFS的版本,当您将Spring Boot作为java -jar yourapp.jar运行时也可以使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java VFS的版本,当您将Spring Boot作为java -jar yourapp.jar运行时也可以使用相关的知识,希望对你有一定的参考价值。

package foo.stripesutls;

import static java.util.stream.Collectors.toList;

import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.util.Arrays;
import java.util.List;

import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import com.google.common.annotations.VisibleForTesting;

import net.sourceforge.stripes.vfs.VFS;

public class SpringBootExecutableJarVFS extends VFS {

	@Override
	public boolean isValid() {
		return true;
	}

	@Override
	public List<String> list(final URL url, final String path) throws IOException {
		ClassLoader cl = this.getClass().getClassLoader();
		ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl);
		Resource[] resources = resolver.getResources(path + "/**/*.class");
		final List<String> resourcePaths = Arrays.asList(resources).stream()
				.map(resource -> {
					try {
						return preserveSubpackageName(resource.getURI(), path);
					} catch (IOException e) {
						throw new RuntimeException(e);
					}
				})
				.collect(toList());
		return resourcePaths;
	}

	@VisibleForTesting
	protected static String preserveSubpackageName(final URI uri, final String rootPath) {
		final String uriStr = uri.toString();
		// we must return the uri with everything before the rootpath stripped off
		final int start = uriStr.indexOf(rootPath);
		return uriStr.substring(start, uriStr.length());
	}
}

以上是关于java VFS的版本,当您将Spring Boot作为java -jar yourapp.jar运行时也可以使用的主要内容,如果未能解决你的问题,请参考以下文章

当您将合约存储在映射中时,实际存储了啥?

当您将对象数组转换为字符串数组时,它叫啥?

如何测试当您将应用更新发布到市场时会发生啥

使用 GraphQL Java 工具时 Spring Boot 应用程序无法启动

当您将数据绑定到集合时,如何将其设置为属性? [复制]

当您将表格与公共列组合时重叠日期逻辑 - 领先或滞后