我正在使用AWS S3 JS SDK。我的 S3 存储桶中的文件夹内有文件夹,我想仅列出特定级别的文件夹。
这是结构:
bucket/folder1/folder2/folder3a/file1
bucket/folder1/folder2/folder3a/file2
bucket/folder1/folder2/folder3a/file3
bucket/folder1/folder2/folder3a/...
bucket/folder1/folder2/folder3b/file1
bucket/folder1/folder2/folder3b/file2
bucket/folder1/folder2/folder3b/file3
bucket/folder1/folder2/folder3b/...
bucket/folder1/folder2/folder3c/file1
bucket/folder1/folder2/folder3c/file2
bucket/folder1/folder2/folder3c/file3
bucket/folder1/folder2/folder3c/...
Run Code Online (Sandbox Code Playgroud)
如您所见,在文件夹 3 的级别,我有多个文件夹,每个文件夹都包含多个项目。我不关心这些物品。我只想列出第 3 级的文件夹名称。有没有好的方法可以做到这一点?
我发现的唯一方法是使用ListObjectsV2。但这也给了我一些导致结果集膨胀的文件,之后我需要进行手动过滤。有没有办法在 API 级别只获取文件夹名称?
在我的 Gradle 项目中,我有一个非常简单的 JUnit 测试:
import org.junit.jupiter.api.Test
import static org.junit.jupiter.api.Assertions.fail
class ApiCallerTest {
@Test
void testSetApiKey() {
fail();
}
}
Run Code Online (Sandbox Code Playgroud)
当我在 IntelliJ 中运行测试时,我得到一个任务列表,其中包含构建成功的消息。例如。:
Testing started at 19:52 ...
> Task :cleanTest UP-TO-DATE
> Task :compileJava UP-TO-DATE
> Task :compileGroovy NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :compileTestGroovy NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
BUILD SUCCESSFUL in 0s
Run Code Online (Sandbox Code Playgroud)
这不应该发生,因为我预计测试会失败。我还收到一条消息“未收到测试事件”。
这是我的 gradle.build 文件:
plugins {
id 'groovy' …Run Code Online (Sandbox Code Playgroud) 我正在 IntelliJ CE 中使用 Gradle 编写一个 Java 应用程序。我正在尝试调试,但每次代码出现异常时,控制台中唯一的文本是:
Execution failed for task ':Main.main()'.
> Process 'command 'F:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2019/jbr/bin/java.exe'' finished with non-zero exit value 1
Run Code Online (Sandbox Code Playgroud)
如果我单步执行代码,我可以在抛出异常时在控制台中看到异常。但是,一旦整个代码执行结束,异常就会消失,我只能看到上面的消息。(附截图)。
知道如何解决这个问题并能够看到错误消息吗?
我有一个在 IDE 中运行时完美运行的 Spring Boot 项目。我想通过 AWS CodeStar 运行它。不幸的是,CodeStar 创建的默认 Spring 模板使用的是 Spring MVC。
我不能只用我的 Spring Boot 项目覆盖默认的 Spring MVC 项目(它不起作用)。我可以将我的一些资源复制到 MVC 项目中,例如 index.html 并且有效。但是,像 Thymeleaf 这样的功能就不起作用了。由于这个和其他原因,我想将提供的 Spring MVC 更改为我已经拥有的 Spring Boot 结构。
我按照这里的说明操作:https : //www.baeldung.com/spring-boot-migration
不幸的是,这没有帮助。我可以创建应用程序入口点并添加 Spring Boot 依赖项而不会破坏应用程序。但是当我删除默认依赖项或与 MVC 关联的配置时,应用程序会中断。尝试访问 URL 时,我收到 404 错误描述:
源服务器没有找到目标资源的当前表示,或者不愿意透露一个存在。
调试此错误消息(例如https://www.codejava.net/java-ee/servlet/solved-tomcat-error-http-status-404-not-found)没有帮助。
该消息似乎已连接到网络资源。我在文件夹资源以及 webapp/resources 中有我的网络资源。而且 Spring Boot 不需要任何位置配置,对吧?它默认使用此位置。
有人可以告诉我要删除哪些内容以及添加哪些内容才能使用我现有的 Spring Boot 项目吗?
编辑:
这是 AWS CodeStar Spring Web 应用程序默认模板的链接:https : //github.com/JanHorcicka/AWS-codestar-template
这是我的 Spring Boot 项目结构:
我有一个带有 MySQL 的 Spring Boot 应用程序。我可以将用户保存在数据库中,但当我尝试登录时,它一直说用户名或密码不正确。即使我对用户进行硬编码,它仍然不起作用。
我使用JavaBrains 教程及其GitHub上的代码创建了该设置。
这是我正在使用的代码。
安全配置:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorize -> authorize
.antMatchers("/static/**", "/index").permitAll()
.antMatchers("/premium/**").hasAuthority("PREMIUM")
.antMatchers("/user/**").hasAuthority("USER")
)
.formLogin(formLogin -> formLogin
.loginPage("/login")
.failureUrl("/login-error")
);
}
@Bean
public PasswordEncoder getPasswordEncoder() {
return NoOpPasswordEncoder.getInstance();
}
}
Run Code Online (Sandbox Code Playgroud)
我的用户详情服务
public class MyUserDetailsService implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String …Run Code Online (Sandbox Code Playgroud) java ×4
gradle ×2
spring-boot ×2
amazon-s3 ×1
aws-codestar ×1
aws-sdk-js ×1
spring ×1
spring-mvc ×1
thymeleaf ×1
unit-testing ×1