小编Bet*_*eto的帖子

Proguard在我的战争中只混淆/WEB-INF/classes/**/*.class文件

我想只混淆服务器端代码(webapp.war:/ WEB-INF/classes/**).

我怎么能用proguard maven插件做到这一点?

java war proguard

15
推荐指数
1
解决办法
1225
查看次数

在tomcat嵌入spring boot中禁用jarManifest的Jar Scan

我在日志中收到一些警告,如下所示:

java.io.FileNotFoundException: C:\Users\user\.m2\repository\com\lowagie\itext\2.0.8\bcmail-jdk14-138.jar (O sistema não pode encontrar o arquivo especificado)
    at java.util.zip.ZipFile.open(Native Method) ~[na:1.8.0_121]
    at java.util.zip.ZipFile.<init>(ZipFile.java:219) ~[na:1.8.0_121]
    at java.util.zip.ZipFile.<init>(ZipFile.java:149) ~[na:1.8.0_121]
    at java.util.jar.JarFile.<init>(JarFile.java:166) ~[na:1.8.0_121]
    at java.util.jar.JarFile.<init>(JarFile.java:130) ~[na:1.8.0_121]
    at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:60) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:48) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
    at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
    at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101) [tomcat-embed-jasper-8.5.6.jar:8.5.6]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) [tomcat-embed-core-8.5.6.jar:8.5.6]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_121]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_121]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_121]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Run Code Online (Sandbox Code Playgroud)

在一个独立的tomcat中,我可以创建一个context.xml:

<Context>
  ...
  <JarScanner scanManifest="false"/>
  ... …
Run Code Online (Sandbox Code Playgroud)

tomcat spring-boot

10
推荐指数
3
解决办法
4490
查看次数

AspectJ将返回类型匹配为泛型接口

我正在尝试创建一个AspectJ Aspect,以拦截具有通用接口的返回方法。

这是我的AspectJ

@AspectJ
public class MyAspect {

    @AfterReturning("execution(java.util.Collection+<mypackage.MyAbstractEntity+> mypackage.mvc.controllers..*.*(..))", returning = "list")
    public doStuff(JoinPoint j, Collection<MyAbstractEntity> list) {
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我想参加的班级:

package mypackage.mvc.controller;

public class MyController {
    // MyEntity extends MyAbstractEntity
    public List<MyEntity> findAll() {
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

aspectj

7
推荐指数
1
解决办法
864
查看次数

在Jaspersoft Studio 6.3中的TextField表达式中使用lambda表达式

我想在TextField表达式中使用lambda表达式,如下所示:

Arrays.asList($F{field1}, $F{field2}, $F{field3}).stream().filter(i -> i != null).collect(java.util.stream.Collectors.joining(" / "))
Run Code Online (Sandbox Code Playgroud)

假设这些字段的值:

$F{field1} = 1
$F{field2} = null
$F{field3} = 2
Run Code Online (Sandbox Code Playgroud)

TextField评估的预期结果是:

1 / 2
Run Code Online (Sandbox Code Playgroud)

而不是我在IDE中收到错误:

Lambda expressions are allowed only at source level 1.8 or above
Run Code Online (Sandbox Code Playgroud)

这是编译期间IDE内部的异常:

net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. Lambda expressions are allowed only at source level 1.8 or above
                value = "Contato: " + Arrays.asList(((java.lang.String)field_c_telefone.getValue()), ((java.lang.String)field_c_celular.getValue()), ((java.lang.String)field_c_fax.getValue()), ((java.lang.String)field_c_email.getValue())).stream().filter(i -> i != null).collect(java.util.stream.Collectors.joining(" / ")); //$JR_EXPR_ID=22$
                                                                                                                                                                                                                                                               <------------>
2. Lambda expressions are …
Run Code Online (Sandbox Code Playgroud)

java lambda jasper-reports java-8 jaspersoft-studio

6
推荐指数
1
解决办法
1240
查看次数

使用gradle执行maven deploy-file

我需要将外部zip文件部署到我的私有maven存储库.这个文件将满足我的应用程序版本,内部存档将使用jar,dll,configs,exes来满足我的应用程序的文件结构......

如何使用gradle执行maven部署:deploy-file?

mvn deploy:deploy-file 
-DgroupId=acme 
-DartifactId=acme 
-Dversion=1.0 
-Dpackaging=jar 
-Dfile=C:\tmp\acme-1.0.jar 
-DrepositoryId=Nexus 
-Durl=http://myserver:8888/nexus/content/repositories/thirdparty/
Run Code Online (Sandbox Code Playgroud)

我正在尝试将外部zip文件发布到我的maven存储库:

apply plugin: "base"
apply plugin: "maven"
apply plugin: "maven-publish"

publishing {
    def host = "myhost"
    def url = "http://$host/content/repositories/releases"
    def group = "package"
    def artifact = "name"
    def version = "0.0.1"
    def file = "c:/my.zip"

    publications {
        mavenJava(MavenPublication) {
            create('zip', MavenPublication) {
                groupId "$group"
                artifactId "$artifact"
                version "$version"
                artifact file("$file")
            }       
        }
    }
    repositories {
        maven {
            credentials {
                username 'user'
                password 'pwd'
            }
            url "$url"
        }
    } …
Run Code Online (Sandbox Code Playgroud)

deployment groovy gradle maven build.gradle

6
推荐指数
1
解决办法
994
查看次数

如何知道应用程序是否空闲

我正在创建一个模拟用户输入(鼠标和键)的框架.

该框架将提供用于简单实现DUnit测试的API.

我目前面临的一个重大问题是等待应用程序空闲.

我有一个服务器(TCP)接收命令,如"类型文本","按键","单击XY"...我需要等待处理这些命令,然后返回到客户端API继续运行测试的下一步.

由于我的服务器通过线程接收并执行操作,因此不存在捕获执行的风险,就像单击将显示模式消息的按钮一样.

我目前正在使用ApplicationEvents.OnIdle来帮助我,但在某些情况下它不能很好地工作.

我也尝试使用WaitForInputIdle,但只是它没有解决我的问题,因为应用程序可能仍在处理用户输入后处理操作...

有人能帮我吗?

delphi

5
推荐指数
1
解决办法
969
查看次数

如何防止delphi TWebBrowser窃取焦点

我对 Delphi 和 WebBrowser 组件很着迷。

我创建了一个简单的应用程序,在备忘录中输入 HTML 并在 WebBrowser 组件中显示结果。

但是,当我在 WebBrowser 内部单击时,每个 HTML 代码更新(在备忘录中)都会导致 WebBrowser 组件窃取焦点。

以下是重现问题的分步说明:

  • 创建一个新的 VCL 应用程序
  • 添加一个 TWebBrowser 组件来显示 html
  • 添加 TMemo 组件以键入 html 代码
  • 在 Memo1.OnChange 事件上插入:

    if WebBrowser1.Document = nil then
    begin
      WebBrowser1.Navigate('about:blank');
      while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
        Application.ProcessMessages;
    end;
    
    ms := TMemoryStream.Create;
    try
      Memo1.Lines.SaveToStream(ms);
    
      ms.Seek(0, 0);
    
      (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
    finally
      ms.Free;
    end;
    
    Run Code Online (Sandbox Code Playgroud)
  • 运行应用程序

  • 在备忘录中输入 HTML

    <html>
    <body>
    Hello WebBrowser
    </body>
    </html>
    
    Run Code Online (Sandbox Code Playgroud)
  • 在 WebBrowser 内容中单击

  • 返回备忘录并尝试在 HTML 中输入更多更改
  • 我们开始*,在每次按下按键时,网络浏览器组件都会为其窃取焦点!

我怎样才能解决这个问题并防止“窃取焦点”?

Ps.:唯一的解决方法是 …

delphi focus webbrowser-control twebbrowser

5
推荐指数
1
解决办法
2641
查看次数

Jackson JSON,按路径过滤属性

我需要在序列化时动态过滤 bean 属性。

@JsonView对我来说不是一个选择。

假设我的 Bean(作为 Json 表示法):

{
   id: '1',
   name: 'test',
   children: [
      { id: '1.1', childName: 'Name 1.1' },
      { id: '1.2', childName: 'Name 1.2' }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我想编写具有以下属性的 JSON:

// configure the ObjectMapper to only serialize this properties:
[ "name", "children.childName" ]
Run Code Online (Sandbox Code Playgroud)

预期的 JSON 结果是:

{
   name: 'test',
   children: [
      { childName: 'Name 1.1' },
      { childName: 'Name 1.2' }
   ]
}
Run Code Online (Sandbox Code Playgroud)

最后,我将创建一个注释 ( @JsonFilterProperties) 以便在 RestController 中与 Spring 一起使用,如下所示:

@JsonFilterProperties({"name", "children.childName"}) // …
Run Code Online (Sandbox Code Playgroud)

java json spring-mvc jackson

5
推荐指数
1
解决办法
7433
查看次数

如何通知Windows服务中的时间更改

我创建了一个WindowProc来通知系统时间变化:

constructor TJJWScheduler.Create;
begin 
  fTimeChangeWnd := Classes.AllocateHWnd(TimeChangeWndProc);
end;

procedure TJJWScheduler.TimeChangeWndProc(var msg: TMessage);
var
  i: integer;
begin
  case msg.Msg of
    WM_TIMECHANGE:
      begin
        // my things
      end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

此代码在Windows服务中运行.问题是当我改变系统时间时它不会被触发!

为什么广播消息(WM_TIMECHANGE)没有发送到我的窗口?没有循环还有另一种方法吗?


编辑

我不知道为什么,但我硬编码PeekMessage来处理消息到那个窗口,一切都工作正常.下面的代码解决了我的问题:

 var 
   msg: TMsg;

 if PeekMessage(msg, fTimeChangeWnd, WM_TIMECHANGE, WM_TIMECHANGE, PM_REMOVE) then
 begin
   TranslateMessage(msg);
   DispatchMessage(msg);
 end;
Run Code Online (Sandbox Code Playgroud)

这种解决方法非常奇怪,因为我已经有其他窗口处理消息(通过通用ProcessMessages),只有这个没有处理它的消息.

delphi service winapi

4
推荐指数
1
解决办法
1274
查看次数

如何访问Spring中类级别指定的控制器的PathVariable?

我可以用Spring MVC做这样的事吗?

@RequestMapping(value = "/{root}")
public abstract class MyBaseController {

    @PathVariable(value = "root")
    protected ThreadLocal<String> root;

}

@Controller
public class MyController extends MyBaseController {

    @RequestMapping(value = "/sayHello")
    @ResponseBody
    public String hello() {
        return "Hello to " + this.root.get();
    }

}
Run Code Online (Sandbox Code Playgroud)

当我要求时http://..../roberto/sayHello,我得到这个作为回应:

Hello to roberto
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

4
推荐指数
2
解决办法
6747
查看次数