小编Kri*_*den的帖子

Eclipse工作区中的哪个位置是存储的项目列表?

我使用Eclipse和"外部"项目 - 即从现有源创建的项目.

在工作区文件中查找,我找不到对这些项目的任何引用.我的问题是:Eclipse如何跟踪这些项目?

我希望能够自动将这样的项目添加到工作区(通过生成.project.classpath文件).

eclipse project

120
推荐指数
3
解决办法
11万
查看次数

@OneToMany和复合主键?

我正在使用带注释的Hibernate(在spring中),并且我有一个对象,它有一个有序的,多对一的关系,一个子对象有一个复合主键,其中一个组件是一个外键回到父对象的id.

结构看起来像这样:

+=============+                 +================+
| ParentObj   |                 | ObjectChild    |
+-------------+ 1          0..* +----------------+
| id (pk)     |-----------------| parentId       |
| ...         |                 | name           |
+=============+                 | pos            |
                                | ...            |
                                +================+
Run Code Online (Sandbox Code Playgroud)

我尝试了各种注释组合,但似乎都没有.这是我能够提出的最接近的:

@Entity
public class ParentObject {
    @Column(nullable=false, updatable=false)
    @Id @GeneratedValue(generator="...")
    private String id;

    @OneToMany(mappedBy="parent", fetch=FetchType.EAGER, cascade={CascadeType.ALL})
    @IndexColumn(name = "pos", base=0)
    private List<ObjectChild> attrs;

    ...
}

@Entity
public class ChildObject {
    @Embeddable
    public static class Pk implements Serializable {
        @Column(nullable=false, updatable=false)
        private String parentId;

        @Column(nullable=false, updatable=false)
        private …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate composite-key one-to-many

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

以编程方式生成Eclipse项目

我使用eclipse来处理最初独立于eclipse创建的应用程序.因此,应用程序的目录结构显然不适合日食.

我想以编程方式为应用程序生成一个项目.在.project.classpath文件是很容易弄清楚,我已经了解到,项目存储在工作区下<workspace>/.metadata/.plugins/org.eclipse.core.resources/.projects

不幸的是,这里的一些文件(特别是.location)似乎是以某种二进制格式编码的.在预感中我试图使用ObjectInputStream- 无骰子反序列化它.所以它似乎不是一个序列化的java对象.

我的问题是:有没有办法自动生成这些文件?

对于好奇,我试图反序列化.location文件的错误如下:

java.io.StreamCorruptedException: java.io.StreamCorruptedException: invalid stream header: 40B18B81

更新:我的目标是能够使用命令行脚本或程序替换New Java Project向导.原因是所讨论的应用程序实际上是一个非常大的J2EE/weblogic应用程序,我喜欢将其分解为一个较大的(近20个)子项目集合.更复杂的是,我们对SCM使用clearcase并为每个版本创建一个新分支.这意味着我需要为我创建的每个开发视图(分支)重新创建这些项目.这通常足以自动化.

java eclipse

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

Solaris 9上的printf + uint_64?

我有一些c(++)代码使用sprintf将uint_64转换为字符串.这需要可移植到Linux和Solaris.

在linux上我们使用%ju,但在Solaris上似乎没有任何等价物.我能找到的最接近的是%lu,但这会产生不正确的输出.一些示例代码:

#include <stdio.h>
#include <sys/types.h>

#ifdef SunOS
typedef uint64_t u_int64_t;
#endif

int main(int argc, char **argv) {
    u_int64_t val = 123456789123L;

#ifdef SunOS
    printf("%lu\n", val);
#else
    printf("%ju\n", val);
#endif
}
Run Code Online (Sandbox Code Playgroud)

在linux上,输出是预期的; 在Solaris 9上(不要问),它是"28"

我可以用什么?

c c++ printf

9
推荐指数
2
解决办法
4429
查看次数

无条件地在ant中执行任务?

我正在尝试定义在目标完成执行时发出(使用echo)消息的任务,无论该目标是否成功.具体来说,目标执行一个任务来运行一些单元测试,我想发出一条消息,指出结果的可用位置:

<target name="mytarget">
  <testng outputDir="${results}" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果测试失败,则任务失败并且执行中止.因此,只有在测试通过时才输出消息 - 与我想要的相反.我知道我可以将任务放在任务之前,但这会让用户更容易错过这条消息.我正在尝试做什么?

更新:事实证明我是愚蠢的.我的<testng>任务中有haltOnFailure ="true",这解释了我所看到的行为.现在的问题是,将此设置为false会导致整个ant构建成功,即使测试失败,这也不是我想要的.以下使用该任务的答案看起来可能是我想要的......

java ant unit-testing

6
推荐指数
3
解决办法
4344
查看次数

应用(服务)自我升级?

我正在用C#开发一个基于.NET4的应用程序,它作为一个Windows服务运行.

我希望这个应用程序能够通过定期连接的Web服务进行升级.有没有可以接受的方法来实现这一目标?它甚至可能吗?

我正在考虑它的方式是这样的:

  1. Windows服务(.exe)代码将其替换和支持DLL作为zip下载并将其提取到临时目录.该zip还包括一个小的"升级程序"可执行文件或脚本.
  2. 该服务分叉子进程以运行升级程序,在命令行上传递目标目录和任何其他所需信息
  3. 该服务关闭
  4. 升级程序进程等待服务完全停止,然后将必要的文件(新的.exe,DLL)移动到最终安装目录中,替换旧文件
  5. 升级程序重新启动Windows服务,该服务生成(已升级的).exe并在启动后退出

这会有用吗?您可以从我的术语和方法中检测到我来自UNIX背景而不是Windows背景.我已经在UNIX上使用了这种方法,但我不知道可能存在哪种类型的窗口...

更新:我对这个问题的主要动机是围绕自我更新的.NET应用程序的技术可行性(如何进行.DLL的就地替换等).正如评论中所指出的,实现这样的功能还涉及许多其他考虑因素,特别是关于验证所应用的新软件组件的安全问题实际上是合法的.这些也很重要,但不是特定于.NET或Windows(imo).当然欢迎对这些领域的评论,但目前他们不是我主要关注的问题......

.net c# .net-4.0

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

将 jmockit 期望与匹配器和原始类型结合使用

我正在使用 jmockit 进行单元测试(使用 TestNG),并且我在使用 Expectations 类来模拟使用匹配器将原始类型(布尔值)作为参数的方法时遇到了问题。下面是一些说明问题的示例代码。

/******************************************************/
import static org.hamcrest.Matchers.is;

import mockit.Expectations;

import org.testng.annotations.Test;

public class PrimitiveMatcherTest {
  private MyClass obj;

  @Test
  public void testPrimitiveMatcher() {
    new Expectations(true) {
      MyClass c;
      {
        obj = c;
        invokeReturning(c.getFoo(with(is(false))), "bas");
      }
    };

    assert "bas".equals(obj.getFoo(false));

    Expectations.assertSatisfied();
  }

  public static class MyClass {
    public String getFoo(boolean arg) {
      if (arg) {
        return "foo";
      } else {
        return "bar";
      }
    }
  }
}
/******************************************************/
Run Code Online (Sandbox Code Playgroud)

包含调用 invokeReturning(...) 的行抛出 NullPointerException。

如果我将此调用更改为不使用匹配器,如下所示:

invokeReturning(c.getFoo(false), "bas");
Run Code Online (Sandbox Code Playgroud)

它工作得很好。这对我没有好处,因为在我的真实代码中,我实际上是在模拟一个多参数方法,我需要在另一个参数上使用匹配器。在这种情况下,Expectations 类要求所有参数都使用匹配器。

我很确定这是一个错误,或者可能无法将 …

java unit-testing jmockit mocking

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