小编sle*_*ske的帖子

在Eclipse中调试时修改静态变量

作为扩展问题" 在Eclipse中调试时修改/查看静态变量 ",我希望能够在Eclipse中调试时修改静态变量.

例如,局部变量,我可以在Eclipse的"变量"视图中选择变量,并使用上下文菜单"更改值..."来更改值.

对于任意静态变量,这是不可能的,因为它们不会出现在"变量"视图中.

我尝试了什么:

  1. 如果从"变量"视图的三角形菜单中选择"Java /显示静态变量",则可以查看和修改"变量"视图中列出的变量的静态成员变量.但是,我没有找到如何访问其实例未出现在"变量视图"中的类的静态成员.
  2. 您当然可以将静态成员作为表达式输入"表达式视图"(使用完全限定名称).然后,你可以看到价值,但"表达意见"没有一个选项来修改这个值(它不会允许修改表达式的成员,但不能表达自己,即使表达式是一个字段).

所以,如果我有一个像布尔MyClass.disableAllBugs这样的静态变量,有没有办法在调试期间更改MyClass.disableAllBugs?

抛开:我意识到即使拥有公共可变静态字段(即可变全局变量)也是非常糟糕的风格.但是有些代码库有它,然后在调试时修改它有时很有用.

eclipse variables debugging static

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

有没有人在Metro上本地解析schemaLocation的jax-ws-catalog.xml?

我在我的.war文件中添加了一个jax-ws-catalog.xml,以便在本地而不是远程解析schemaLocation.我跟着这个例子

Metro用户指南:2.10.使用本地打包的WSDL开发客户端应用程序

当我部署.war并使用soapUI来验证Web服务时,它会在尝试访问schemaLocation时遇到困难 http://somehost:8080/CMDB/schemas/common/1.0/CMDBCommonTypes.xsd

架构和wsdl都在Eclipse中验证(使用Eclipse的XML Catalog工具).(如果有帮助的话,我可以发布我的jax-ws-catalog.xml和相关的xsd和wsdl的内容.

谷歌搜索发现了许多其他问题,jax-ws-catalog.xml无法在Metro堆栈中运行.

有没有人在Metro中使用jax-ws-catalog.xml?

java java-metro-framework jax-ws

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

部署到集成服务器并使用Maven运行冒烟测试

我们正在使用Maven来构建Web应用程序.

现在我们希望我们的CI(连续集成)服务器自动将WAR部署到用作alpha测试服务器的远程Tomcat实例.

我们使用cargo-maven-plugin来做到这一点,它工作正常.

但是,现在我们还想在部署后对远程Tomcat进行冒烟测试,以确保(重新)部署干净利落.

我们有测试(使用HtmlUnit),但是我们在将它们集成到Maven时遇到了麻烦.到目前为止,我们直接开始运货(使用mvn cargo:redeploy).这很有效 - 然而,我们找不到事后进行烟雾测试的方法.

那么我们如何才能将maven设置为

  • 首先使用货物部署
  • 然后进行烟雾测试

在maven构建生命周期中似乎没有这个地方.我们需要定义自定义构建生命周期吗?我们能以某种方式绑定到默认的生命周期阶段吗?哪一个?

deployment continuous-integration maven

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

我可以自动更新gettext的.po文件中的msgids以进行琐碎的文本更改吗?

使用gettext,消息的原始(通常是英语)文本用作翻译的消息密钥("msgid").这意味着每次原始文本更改时,必须在所有.po文件中更新msgid.

对于文本的真实更改,这显然是不可避免的,因为翻译者必须更新翻译.

但是,如果原件的更改没有改变其含义,则重新翻译是超级的(例如,标点变化,空白变化或拼写错误的纠正).

有没有办法在这种情况下自动更新.po文件?

我试图使用xgettext和msgmerge(打开模糊匹配),但模糊匹配有时会失败,加上这会产生许多丑陋的"#,模糊"标志.

注意:有一个类似的问题: 如何在对大文本值进行小编辑时有效地使用gettext PO文件 但是,这是关于大字符串,因此是一个更具体的问题.

translation gettext internationalization

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

PrimeFaces CommandButton:动态启用/禁用图标

PrimeFaces的CommandButton允许指定一个图标:

<p:commandButton value="Press me" icon="redBall" ... />
Run Code Online (Sandbox Code Playgroud)

但是,我需要根据JSF托管bean属性启用/禁用图标.

我试过了

<p:commandButton value="Press me" icon="#{bean.iconClass}" ... />
Run Code Online (Sandbox Code Playgroud)

这适用于选择不同的图标,但不允许完全禁用图标(即获得相同的渲染,如没有icon=属性).我可以返回一个空字符串getIconClass(),但PrimeFaces仍然会<span>为按钮内的图标渲染额外内容,而CSS样式会使该范围显示为默认图标.

有没有办法告诉PrimeFaces"我根本不想要图标"(除了icon=完全取出属性)?

jsf primefaces

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

为什么Spring Integration有多个XML模式,我应该使用哪一个?

要在Spring XML配置文件中使用Spring Integration,我需要声明si命名空间,并提供XML Schema的模式位置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xsi:schemaLocation="http://www.springframework.org/schema/integration
      http://www.springframework.org/schema/integration/spring-integration.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd">
Run Code Online (Sandbox Code Playgroud)

但是,根据文档,有两种模式可供选择:

从现在开始,用户必须始终声明最新的XML架构(当前版本为2.1).或者,他们可以使用无版本模式.通常,最好的选择是使用无版本的命名空间,因为它们将自动使用最新的Spring Integration版本.

来自:http://static.springsource.org/spring-integration/reference/htmlsingle/#2.1-schema-updated

为什么会出现两种spring-integration.xsdspring-integration-2.1.xsd?我检查了两个,后者几乎是前者的三倍.

那么为什么文档说使用无版本模式更好?使用其中一个或另一个会有什么后果?或者是它只是一个错误,spring-integration.xsdspring-integration-2.1.xsd有什么不同?

spring xsd spring-integration

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

Git:拒绝通过push删除远程分支(如receive.denyDeletes),但仅当分支未完全合并时

git branch -d mybranch如果该分支未完全合并,Git将默认拒绝删除本地分支(via ).

但是,如果我删除了远程分支git push origin --delete mybranch,则如果分支未完全合并,则不会发出任何警告.

这看起来相当危险:自从我上次获取分支以来,其他人可能已将更新推送到分支,因此意外删除未合并分支似乎更可能是远程分支而不是本地分支.

那么为什么git不会警告我是否删除了一个远程未合并分支?有没有办法让它警告或否认删除?

注意:我意识到理想情况下我应该git pull删除它之前的分支,并确保它完全合并.但是,每个人都会犯错误,我希望有一个安全网.

git merge branch push branching-and-merging

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

标签"<optional>"在dependencyManagement元素中是否有效?

关于可选依赖项的机制如何在Maven中工作,我有点困惑.似乎可选的依赖项仅在直接指定时才起作用,而不是通过依赖项管理.


我创建了三个测试项目p1-p3,带有依赖项:

  • p3取决于p2
  • p2取决于p1

如果我在<dependencies>元素中声明依赖项是可选的,则按预期工作.p2的POM:

<dependencies>
  <dependency>
    <groupId>testgroup</groupId>
    <artifactId>p1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <optional>true</optional>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

结果:p3的构建拉入p2,但不是 p1.

但是,如果我如果我在<dependencyManagement>元素中声明一个依赖项是可选的,那么它似乎被忽略了.p2的POM:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>testgroup</groupId>
      <artifactId>p1</artifactId>
      <version>1.0-SNAPSHOT</version>
      <optional>true</optional>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>testgroup</groupId>
    <artifactId>p1</artifactId>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

结果:p3的构建拉入p2 p1.


这是预期的行为吗?我无法在任何地方找到这个记录.

笔记:

  • 使用Maven 3.0.3和3.2.1进行测试.
  • 为了查看p3的构建是否使用了p1,我检查了它的输出mvn dependency:tree和列出的类路径mvn -X(具有相同的结果).
  • 我也尝试将<dependencyManagement>元素放入p1的POM中,而不是p2.结果是相同的,即<optional>没有效果.

java dependency-management maven-3 maven

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

如何解决git中文件重命名文件夹冲突?

我有以下问题:

我有两个分支 Branch1 和 Branch2 的一些共同提交 A。

  • Branch1 是公共分支(位于服务器上)
  • Branch2 是本地分支

在 Branch1 中我更改了文件 ( BAD_folder/somefile.txt)。更改已推送到服务器。在 Branch2 中,我重命名BAD_folderfolder并做了一些更改somefile.txt。我想将 Branch1 与 Branch2 合并,但文件中出现合并冲突BAD_folder/somefile.txt

我该如何解决这个问题?

git git-merge branching-and-merging merge-conflict-resolution

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

使用 JPA 时避免来自 DB 的陈旧数据?

我面临一个类似于Invalidating JPA EntityManager session 中描述的问题:

问题:获取陈旧数据

我们正在 SQL 数据库上运行 JPQL 查询,该数据库也由不同的应用程序同时更改。我们使用的是在Tomcat下运行的JSF+Spring+EclipseLink。

执行 JPQL 查询的类是一个单例 Spring bean,并使用注入的EntityManager

@Component
public class DataRepository{
    @PersistenceContext
    private EntityManager entityManager;
    public List<MyDTO> getStuff(long id) {
        String jpqlQuery ="SELECT new MyDTO([...])";
        TypedQuery<MyDTO> query = entityManager.createQuery(jpqlQuery,MyDTO.class);
        return query.getResultList();
    }
[...]
Run Code Online (Sandbox Code Playgroud)

(代码释义)。

问题是这段代码看不到直接对数据库执行的更改。这些更改仅在 Tomcat 实例重新启动时才可见。

我们尝试过的

我们假设此行为是由与 关联的一级缓存引起的EntityManager,如链接问题中所述。我们找到了两个解决方案:

  • 调用entityManager.clear()调用之前createQuery(这是建议的链接的问题)
  • 注入一个EntityManagerFactor(使用@PersistenceUnit),然后EntityManager为每个查询创建并关闭一个新的

两种解决方案都能满足我们的需求——我们获得了新的数据。

问题:

  • 这两种解决方案是否正确?哪一个更好?
  • 特别是,我们是否可以安全地调用entityManager.clear()注入的 EntityManager,或者这是否会以某种方式影响也使用注入的 EntityManager 的其他代码(在相同或不同的类中)?
  • 有没有不同的、更好的方法?我们能不能以某种方式声明我们想要刷新缓存,或者我们想要一个新的EntityManager

我认为这一定是一个相当普遍的问题(因为它发生在多个应用程序共享一个数据库时),所以我认为必须有一个简单的解决方案......

database spring caching jpa eclipselink

5
推荐指数
2
解决办法
6637
查看次数