我正在使用Spring 1.0.7,它使用Spring 4.0.7.我使用@Value注释在我的类中自动装配属性.如果属性文件中不存在该属性,我想要一个默认值,因此,我使用":"来指定默认值.以下是示例:
@Value("${custom.data.export:false}")
private boolean exportData = true;
Run Code Online (Sandbox Code Playgroud)
如果属性文件中不存在属性,则应该为变量赋值false.但是,如果文件中存在属性,那么它也会分配默认值并忽略属性值.例如,如果我定义了诸如上述应用属性文件中提到的一个属性有这样的事情custom.data.export=true的话,价值exportData将仍然是假的,而应该是真正的理想.
谁能指导我在这里做错了什么?
谢谢
我正在尝试阅读Sequencescala中Paths中的文件.下面是示例(伪)代码:
val paths = Seq[String] //Seq of paths
val dataframe = spark.read.parquet(paths: _*)
Run Code Online (Sandbox Code Playgroud)
现在,在上面的序列中,存在一些路径而一些路径不存在.有没有办法在读取parquet文件时忽略丢失的路径(避免org.apache.spark.sql.AnalysisException: Path does not exist)?
我已经尝试了以下它似乎工作,但是,然后,我最终读取相同的路径两次,这是我想避免做的事情:
val filteredPaths = paths.filter(p => Try(spark.read.parquet(p)).isSuccess)
Run Code Online (Sandbox Code Playgroud)
我检查了options方法,DataFrameReader但似乎没有任何类似的选项ignore_if_missing.
此外,这些路径可以是hdfs或s3(这Seq是作为一个方法参数传递),并一边读书,我不知道一个路径是s3或hdfs因此无法使用s3或hdfs特定的API,以检查是否存在.
这个问题不是java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder的重复。
我正在尝试更新我的应用程序中的 Java 版本(到 11),并且我的应用程序中的一个库使用sun.misc.BASE64Encoder类,所以我不可避免地会遇到此异常:
Caused by: java.lang.ClassNotFoundException: sun.misc.BASE64Encoder
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Run Code Online (Sandbox Code Playgroud)
现在,解决的方法是使用java.util.Base64apache commons,正如其他答案所建议的那样。然而,问题是,这个库属于第三方,我没有它的源代码。似乎没有一个新版本不使用这些类。因此,为了解决这个问题,我执行了以下操作:
sun.miscBASE64Encoder和类CharacterEncoder但现在,我收到一个编译错误,说The package sun.misc conflicts with a package accessible from another module: jdk.unsupported.
有什么办法可以解决这个错误吗?如果没有,我可以添加一个jar包含这些类的依赖项吗?我只是想确保这些类在运行时可用于第三方库(通过我自己的源代码或通过捆绑这些类的 jar)。
我们使用spring数据mongo存储库来存储/检索文档.以下是我们得到的类的Java结构:抽象类A - >具体类B和C我们使用save()方法编写文档.保存文档时,会保存存储classPath的"_class"变量.现在,当我们尝试查询数据时,我们将获得B和C类的文档.以下是示例:
public List<B> findByName (String name);
Run Code Online (Sandbox Code Playgroud)
当我们调用此方法时,列表(令人惊讶地)也包含C的对象.这可能是因为B和C有一个具有相同名称的属性.我的问题是,如果我们想将结果限制为特定的类,是否可以使用Mongo存储库?我们尝试使用findBy_Class,findByClass,但它抛出一个异常,说它无法在"B"中找到"class"成员.
返回类型(例如List < B >)是否有助于过滤对象?有任何想法吗?
提前致谢.
我正在尝试运行一个具有axis2依赖关系的spring boot jar.我使用spring boot maven插件来构建jar(带有依赖项).当我尝试运行我的jar时,我在控制台中遇到以下异常:
org.apache.axis2.AxisFault: The G:application\myapp\target\myapp.jar!\lib\axis2-1.6.1.jar file cannot be found.
at org.apache.axis2.deployment.repository.util.DeploymentFileData.setClassLoader(DeploymentFileData.java:111)
at org.apache.axis2.deployment.ModuleDeployer.deploy(ModuleDeployer.java:70)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:813)
at org.apache.axis2.deployment.RepositoryListener.loadClassPathModules(RepositoryListener.java:222)
at org.apache.axis2.deployment.RepositoryListener.init2(RepositoryListener.java:71)
at org.apache.axis2.deployment.RepositoryListener.<init>(RepositoryListener.java:64)
at org.apache.axis2.deployment.DeploymentEngine.loadFromClassPath(DeploymentEngine.java:175)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:135)
at ...
Run Code Online (Sandbox Code Playgroud)
然后我检查了我的罐子的结构.它里面有lib文件夹,里面包含所有的jar(包括上面提到的jar jar).附件是lib文件夹的屏幕截图
.以下是我尝试的解决方案:
这些解决方案都没有奏效.但是,当我在eclipse中运行应用程序类时,应用程序启动并完美运行.但是,一旦我创建了jar,似乎没有任何东西可以运行.
有人可以帮忙吗?提前致谢.
我试图通过弹簧启动应用程序的多部分上传来上传文件.在上传文件时,jetty会抛出FileNotFound Exception.
以下是模型结构:
private String identifier;
private MultipartFile file;
Run Code Online (Sandbox Code Playgroud)
以下是配置:
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("500MB");
factory.setMaxRequestSize("500MB");
return factory.createMultipartConfig();
}
@Bean
public CommonsMultipartResolver multipartResolver() {
return new CommonsMultipartResolver();
}
Run Code Online (Sandbox Code Playgroud)
以下调用抛出异常:
model.getFile().getInputStream()
Run Code Online (Sandbox Code Playgroud)
下面是堆栈跟踪:
java.io.FileNotFoundException: /tmp/MultiPart7953817223010764667 (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at org.eclipse.jetty.util.MultiPartInputStream$MultiPart.getInputStream(MultiPartInputStream.java:218)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile.getInputStream(StandardMultipartHttpServletRequest.java:253)
//user classes
Run Code Online (Sandbox Code Playgroud)
此问题是间歇性的,我无法通过连续尝试重新生成它.第二次成功上传同一文件.
知道我在这里做错了什么吗?
提前致谢
我的春季启动应用程序中有以下控制器:
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<ResponseDto<MyClass> process(@RequestBody RequestDto<MyClass> request){
return null;
}
Run Code Online (Sandbox Code Playgroud)
MyClass有一个字段,让我们说'myField',我想要NamingStrategy对这个字段的请求和响应有不同的配置(这是因为我不想为一个字段创建一个新类).我已经配置ObjectMapper了如下实例:
@Bean
public ObjectMapper objectMapper(){
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(namingStrategy);
return objectMapper;
}
Run Code Online (Sandbox Code Playgroud)
这将用于请求和响应(即反序列化和序列化),春季启动中是否有任何方法可以指示控制器使用不同的ObjectMapper实例?
我正在尝试使用Java检查字符串是否包含整个单词.以下是一些例子:
Text : "A quick brown fox"
Words:
"qui" - false
"quick" - true
"quick brown" - true
"ox" - false
"A" - true
Run Code Online (Sandbox Code Playgroud)
以下是我的代码:
String pattern = "\\b(<word>)\\b";
String s = "ox";
String text = "A quick brown fox".toLowerCase();
System.out.println(Pattern.compile(pattern.replaceAll("<word>", s.toLowerCase())).matcher(text).find());
Run Code Online (Sandbox Code Playgroud)
它与我在上面的例子中提到的字符串一样正常工作.但是,如果输入字符串包含类似等字符%,则会得到不正确的结果(,例如:
Text : "c14, 50%; something (in) bracket"
Words:
"c14, 50%;" : false
"(in) bracket" : false
Run Code Online (Sandbox Code Playgroud)
它与我的regex模式有关(或者我正在做错误的整个模式匹配).谁能建议我一个更好的方法.
我的项目中有一个类似于以下内容的代码片段:
public static void main(final String[] args) {
System.out.println("Hello world");
final TypeReference<String> tr1 = new TypeReference<>() {};
final Runnable r = () -> {
System.out.println("Running");
final TypeReference<String> tr = new TypeReference<>() {};
System.out.println(tr);
};
new Thread(r).start();
}
Run Code Online (Sandbox Code Playgroud)
这存在于与 Java 11 一起运行的 eclipse 中。 现在,当 eclipse 编译此类时,它会生成以下文件:
TestAnon.class
TestAnon$2.class
TestAnon$3.class
Run Code Online (Sandbox Code Playgroud)
因为它有两个匿名内部类,所以有两个不同的类文件是有意义的$。但是,后缀是$2and$3而不是$1and $2。按此顺序生成类文件(并跳过$1)的任何具体原因?
PS 当我在命令行上编译类时,它会以正确的顺序生成类文件。
我正在尝试获取他们上载的用户文件,但是当您选择文件并提交时,该错误就会出现。
错误:
org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:947)
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
at com.example.HttpRequest.doPost(HttpRequest.java:153)
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:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) …Run Code Online (Sandbox Code Playgroud) java ×7
spring-boot ×4
spring ×3
java-11 ×2
apache-spark ×1
axis ×1
base64 ×1
deprecated ×1
eclipse ×1
file-upload ×1
http ×1
jackson ×1
java-8 ×1
javac ×1
maven ×1
mongodb ×1
multipart ×1
parquet ×1
regex ×1
repository ×1
scala ×1
spring-data ×1
string ×1