我在Hudson中运行Job时遇到问题.我已经使用ANT_HOME配置了Hudson,其中包含ant和JDK的路径以及相对路径.我创建了一个新工作,在那里我设置了SVN路径和其他东西.我的项目的build.xml位于Project root Folder/build/build.xml中
他们在Linux中添加了build.xml.这是这样的.
<project name="Test Job" default="build">
<target name="clean">
<delete dir="${basedir}/svn/_build"/>
<delete dir="${basedir}/build"/>
</target>
<target name="prepare">
<mkdir dir="${basedir}/svn/_build/logs"/>
<mkdir dir="${basedir}/build/logs"/>
<mkdir dir="${basedir}/build/docs"/>
</target>
<target name="build"
depends="clean,prepare"/>
</project>
Run Code Online (Sandbox Code Playgroud)
注意:我将我的工作名称设置为usercentral.
然后我尝试在Hudson上构建.它给了我以下错误.
FATAL: command execution failed.Maybe you need to configure the job to choose one of your Ant installations?
java.io.IOException: Cannot run program "ant" (in directory "/root/.hudson/jobs/userCentral/workspace/branches/branches/build"): java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at hudson.Proc$LocalProc.(Proc.java:192)
at hudson.Proc$LocalProc.(Proc.java:164)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:638)
at hudson.Launcher$ProcStarter.start(Launcher.java:273)
at hudson.Launcher$ProcStarter.join(Launcher.java:280)
at hudson.tasks.Ant.perform(Ant.java:216)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:603) … 我正在开发的项目在其所有样板代表中使用直接的JDBC数据访问,并且不使用任何事务.我觉得使用事务并简化数据访问方法的编写方式很重要,特别是当前正在进行一些更改.该项目已经存在了很长一段时间,并不适合ORM框架.它也使用了很多Singletons(呃)并解开它以使它能够使用依赖注入将是相当多的工作,我不认为我可以说服任何人我们现在应该这样做.
我喜欢Spring JDBC的界面,特别是通过它SimpleJdbcTemplate.我的问题是如何为此启用一些简单的(每个servlet请求)事务,而不必在每个数据访问方法或使用Spring IoC容器或AOP中以编程方式设置任何内容.我玩过我自己的架构,最终得到一个类似于SimpleJdbcTemplates 的接口,当在请求的上下文中调用它时,可以使用单个请求本地连接和事务(通过ServletRequestListenera ThreadLocal).它似乎运行良好,但我认为使用像Spring JDBC这样的好的外部库会更好.
有人对此有经验吗?
我正在用Java编写一个大型游戏,我正在尝试优化代码,但也要保持代码整洁有序.现在我不确定是否应该使用具有许多实例使用的几个变量的单个类的公共静态字段.
例如,类摄像机具有x和y位置,用于定义用户正在查看的地图的哪个部分以及需要绘制到屏幕的内容.目前我正在使用5万个单位进行基准测试,我有以下选项来绘制它们.
1:在每个单元中存储对摄像机实例的引用,并在绘制时调用getX()和getY():
public void paint()
{
paint(x - camera.getX(), y - camera.getY());
}
Run Code Online (Sandbox Code Playgroud)
2:在绘制时,将摄像机的坐标作为每个单元的参数提供:
public void paint(int cameraX, int cameraY)
{
paint(x - cameraX, y - cameraY);
}
Run Code Online (Sandbox Code Playgroud)
3:使摄像机类的x和y变量保持静态:
public void paint()
{
paint(x - Camera.x, y - Camera.y);
}
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是通常被视为最佳解决方案,如果它影响性能.也许有更多方法可以做到这一点我还没有想到呢?
谢谢!
我需要提取网址的顶级域名,我得到了他的 http://publicsuffix.org/index.html
并且java实现在http://guava-libraries.googlecode.com,我找不到任何提取域名的例子
say example..
example.google.com
returns google.com
and bing.bing.bing.com
returns bing.com
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何使用这个库实现一个例子....
我有一堆实体类型的工厂,它们来自一个通用的通用接口.例如,
public class ConnectionFactory implements IEntityFactory<Connection> { ... }
Run Code Online (Sandbox Code Playgroud)
我想使用Google-Guice打破这些工厂的硬依赖.
但是,当我尝试配置Guice时出现语法错误:
public class EntityFactoryModule extends AbstractModule {
@Override
protected void configure() {
bind(IEntityFactory<Connection>.class).to(ConnectionFactory.class);
}
}
Run Code Online (Sandbox Code Playgroud)
Eclipse说"IEntityFactory无法解析为变量".
有人可以帮我理解为什么这不起作用?另外,还有一种替代语法可行吗?
我需要确保Set<String>我创建的某个内容不会在代码中的其他地方被修改。当然,我最终使用了 Guava 的ImmutableSet为此
Set#contains这个不可变集非常大(大约 59K 字符串),每次调用特定方法时我都必须执行检查。所以我想知道是否有任何方法可以指定大集合中的查找。番石榴的文档说:
高性能、不可变的 Set,具有可靠的、用户指定的迭代顺序。不允许空元素。
user-specified iteration如果通过调用创建不可变集意味着什么ImmutableSet#copyOf(aHashSet)?contains(String)如果我使用ImmutableSet#contains代替 ,性能会受到不利影响吗HashSet#contains?更准确地说,我的问题如下:
有了一个像样的哈希函数,并且同一桶中没有太多元素,人们期望时间复杂度HashSet#contains为 O(1)。使用创建的 ImmutableSet 会copyOf遵守这一点吗?
我怀疑情况可能并非如此,有两个原因:
番石榴论坛讨论正是关于这个问题的(不过似乎没有提供结论性的答案)。
我不清楚是否ImmutableSet#contains遵循java.util.Set#contains(即,在我的例子中的实现HashSet)或com.google.common.collect.ImmutableCollection#contains。如果是后者,那么ImmutableSet#contains将是一个 O(n) 操作。
在我的服务中,我有一个受保护的构造函数@Inject和一个参数(提供者)@Nullable.任何想法,为什么我得到
com.google.inject.CreationException: Guice creation errors: 1) No implementation for [[service]] was bound.
?Guice是3.0pre1,@Nullable是我们的.
如何使用Google Collections Collections2.filter方法实现不同的谓词?
我正在尝试使用Guava的新Range功能来获取日期范围
Range<Date> dateRange = Ranges.range(start, BoundType.CLOSED, end, BoundType.CLOSED);
Run Code Online (Sandbox Code Playgroud)
我的目标是获得此日期范围内的小时数.所以我创建了一个像这样的DiscreteDomain:
private static final DiscreteDomain<Date> HOURS = new DiscreteDomain<Date>() {
public Date next(Date value) {
return addHours(value, 1);
}
private Date addHours(Date value, int i) {
Calendar cal = Calendar.getInstance();
cal.setTime(value);
cal.add(Calendar.HOUR_OF_DAY, i);
return cal.getTime();
}
public Date previous(Date value) {
return addHours(value, -1);
}
public long distance(Date start, Date end) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(start);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(end);
return cal2.getTimeInMillis() - cal1.getTimeInMillis();
}
public Date minValue() …Run Code Online (Sandbox Code Playgroud) 我有一个问题涉及一个人想要将东西注入外部库的实例,即无法用注入注释注释的类.
由于Guice完全依赖于注释,这是否意味着我无法处理Guice的这个用例?使用Spring,我可以用XML声明注入,并且不需要修改类(通过添加注释),所以它只是起作用.
这些观察结果是否正确?如果是这样,您在使用Guice时如何解决问题?
java ×10
guava ×4
guice ×3
ant ×1
data-access ×1
date-range ×1
domain-name ×1
hashset ×1
hudson ×1
jdbc ×1
nullable ×1
performance ×1
set ×1
spring ×1
spring-jdbc ×1
svn ×1
tld ×1
transactions ×1