我使用标准的Maven目录布局在Eclipse中开发我的项目.源位于src/main/java/com/mycompany目录中.并且需要将我的源类放在main.java.com.mycompany包中.当我构建可执行jar文件时,我必须在Manifest.MF中定义主类,如:
Main-Class: main.java.com.mycompany.MyMainClass
Run Code Online (Sandbox Code Playgroud)
但是我在很多例子中看到(比如在maven-assembly-plugin或maven-jar-plugin中配置mainClass属性),没有main.java部分指定了类名.我只想拥有
Main-Class: com.mycompany.MyMainClass
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我是如何实现这一点的,因为我在Maven中完全是新手.
我在使用反射时发现了一些有趣的东西.我试图检索简单类及其修饰符的构造函数.
public class Test {
public Test(Object... args) {}
}
Run Code Online (Sandbox Code Playgroud)
以下是检索构造函数修饰符的代码:
Class<?> clazz = Test.class;
Constructor<?>[] ctors = clazz.getDeclaredConstructors();
for (Constructor<?> ctor : ctors) {
int mod = ctor.getModifiers();
/*if not package-private modifier*/
if(mod!=0) {
System.out.println( Modifier.toString(mod)));
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
public transient
Run Code Online (Sandbox Code Playgroud)
如果我传递给构造函数不是变量参数,而只是数组,那没关系.
public class Test {
public Test(Object[] args) {}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
public
Run Code Online (Sandbox Code Playgroud)
无论构造函数修饰符(public,protected,private)或参数类型(基元或引用)如何,都会发生相同的情况.怎么可能,而"transient"对构造函数来说不是有效的修饰符?
我在doFilter()方法中有以下代码,在这里我获得了应用程序作用域bean.
if (request.getServletContext().getAttribute("resource")==null) {
response.sendError(503);
return;
}
Run Code Online (Sandbox Code Playgroud)
我将503代码映射到web.xml中的特定错误页面.如果发生错误,我真的会在浏览器中获得错误页面的内容.但地址栏中的地址不会因错误页面地址而改变:请求的servlet的地址离开那里.这是正确的行为吗?我想明确告知重定向到错误页面.是否只能使用sendRedirect()?