小编Pio*_*zyk的帖子

获取正在执行的类的文件系统路径

有没有办法在运行时从这个类的代码确定已执行类的当前文件系统位置,因为它是使用java命令执行的?

例如,对于以下类:

public class MyClass{
 public static void main(String[] args){\
   new MyClass().doStuff();
 }

 private void doStufF(){
   String path = ... // what to do here?!
   System.out.println("Path of class being invoked: " + path);
 }

}
Run Code Online (Sandbox Code Playgroud)

有没有办法在调用MyClass.class文件的文件系统中获取和打印正确的路径?

同样,如果我从java -jar命令调用jar文件,有没有办法从该jar内的类中获取jar文件的路径?

PS:请不要做任何假设有关工作目录java被调用的命令!

java filepath

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

为什么没有办法使用ajax请求下载文件?

在我们的应用程序中,我们需要实现以下场景

  1. 请求从客户端发送
  2. 服务器处理请求并生成文件
  3. 服务器返回文件作为响应
  4. 客户端浏览器显示文件下载弹出对话框,允许用户下载文件

我们的应用程序是基于ajax的应用程序,因此我们发送ajax请求(如使用jquery.ajax()函数)非常简单方便.

但是在googilng之后,事实证明只有在使用非ajax POST请求时才能进行文件下载(就像在这个流行的SO线程中所描述的那样).因此,我们需要实现更加丑陋且更复杂的解决方案,这需要form使用嵌套的隐藏字段构建HTML结构.

有人可以用简单的话来解释为什么ajax请求不能用于下载文件?这背后的机制是什么?

javascript ajax post download

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

JPQL语句返回布尔值

是否可以编写如下的JPQL查询:

select count(*) > 0 from Scenario scen where scen.name = :name

这将返回true/false布尔值,具体取决于是否存在实体填充标准?

我想以这种方式使用查询:

boolean exists = entityManager.createQuery(query,Boolean.class).setParameter("name",name).getSingleResult();
Run Code Online (Sandbox Code Playgroud)

我的例子中的查询在语法上是不正确的(解析错误),但有没有正确的方法在JPQL中进行检查,这会返回布尔值,还是只能在Java代码中进行?

select jpa jpql jpa-2.0

35
推荐指数
2
解决办法
3万
查看次数

Scala:将函数作为花括号之间的代码块传递

有几次我看到像这样的Scala代码:

object Doer{
   def doStuff(op: => Unit) {
      op
   }
}
Run Code Online (Sandbox Code Playgroud)

以这种方式调用:

Doer.doStuff{
      println("Done")
}
Run Code Online (Sandbox Code Playgroud)

对我来说奇怪的是函数如何作为花括号之间的代码块传递给另一个函数.甚至没有括号通常标记参数列表的开头和结尾.

这个Scala语法/功能的名称是什么?在什么情况下我可以使用它?它在哪里记录?

syntax scala

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

Guice Persist是否提供事务范围或应用程序管理的EntityManager?

我们使用Guice Persist在我们的项目中注入EntityManager.

例如

public class MyDao{
   @Inject
   EntityManager em;

   public void someMethod(){
       //uses em instance
   }
}
Run Code Online (Sandbox Code Playgroud)

但我们还不清楚如何使用注入的实例EntityManager.

  1. 这是什么类型的EntityManager?(参见例如:实体经理的类型)引擎盖Guice Persist实例化它,EntityManagerFactory.createEntityManager()所以我说它是应用程序管理的实体管理器.但在官方Wiki中,他们写了关于每个事务的策略,这表明EntityManager是(伪)事务范围的.
  2. 我们应该手动调用close()吗?或者Guice会照顾它吗?
  3. 一级缓存的范围是什么?只有单个事务(比如在事务范围的实体管理器中)或者只要我使用相同的注入实例EntityManager(比如在应用程序管理实体管理器中)?

jpa guice entitymanager guice-persist

17
推荐指数
3
解决办法
5490
查看次数

项目中的罐子的文件夹

当我处理小型桌面项目时,我曾经lib在项目的根目录中创建文件夹,在那里我保留了所有项目的jar依赖项.然后我使用配置构建路径 - > - > 添加JAR ...来手动将此文件夹中的所有jar添加到buildpath/classpath.而且因为添加JAR ...(与添加外部JAR不同)使用相对路径,项目是可移植的,这对我来说很重要.

问题是每次我从我的lib文件夹中添加或删除一个jar时,我需要在项目构建路径设置中手动添加/删除这个jar(当然我经常忘记这样做).

有没有办法告诉Eclipse"这是我保存所有罐子的文件夹.请将所有罐子自动添加到buildpath/classpath"?我试图将此文件夹视为类文件夹(Add class folder...),但它不起作用:(.

PS我知道Maven和Eclipse-Maven集成,但我想保持我的小项目很简单(Maven集成有时令人沮丧,所以我宁愿在这些项目中避免它),所以请不要在回答中提出这个建议.另外正如我所提到的,这些是桌面项目,因此WEB-INF/lib我的项目中没有通常由Java EE插件自动处理的文件夹.

eclipse configuration classpath buildpath

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

在Eclipse中自动更新格式化程序

我们在项目中依赖Eclipse格式化程序来强制执行格式约定.它很棒,我们非常喜欢它.

我们将格式化程序文件与源代码控制中的项目保持在一起,并要求每个人将此格式化程序导入Eclipse.唯一严重的问题是,每当有人修改格式化程序并提交更改时,每个团队成员都需要手动"重新导入"格式化程序.并且很容易忘记这样做,所以我们经常最终在团队中使用不同版本的格式化程序.

更新格式化程序文件时,有没有办法让Eclipse自动使用新版本的格式化程序?(我的意思是,我们可以只对Eclipse说"这是格式化程序文件的路径,总是使用此文件的当前版本作为格式化程序"?)这会很棒!

有任何想法吗?

eclipse formatter eclipse-formatter

12
推荐指数
1
解决办法
2637
查看次数

关闭资源总是很重要吗?

很多时候,我遇到了一个声明,即应用程序应该始终显式关闭它打开的所有资源.

我的编程方法相当务实,我不喜欢盲目地遵循任何我没有明确看到的好处.因此我的问题.

我们假设:

  1. 我有一个小应用程序
  2. 它打开一些资源(例如文件,数据库连接,远程流)并对其进行处理
  3. 它工作几分钟然后退出
  4. 让我们说它是用Java语言(如果语言相关)

我真的要关心关闭我打开的所有资源吗?我猜我打开的所有资源都将在应用程序/虚拟机退出时关闭/释放.我对吗?

如果这是真的,是否有任何令人信服的理由关心在如此短小的工作申请中关闭资源?

更新:

这个问题纯属假设,但不关心这个问题的论点是,我可能只是在一起编写一些快速脚本,并且不想编写与手头问题没有直接关系的任何不必要的代码:关闭资源,完成所有这些详细的try-catch-finally东西,处理我不关心的异常等.

问题的关键是不做是否有任何实际后果.

java resources file stream

12
推荐指数
3
解决办法
1490
查看次数

Mockito - 使用本机方法模拟类

我有简单的测试用例:

@Test
public void test() throws Exception{
       TableElement table = mock(TableElement.class);
       table.insertRow(0);
}
Run Code Online (Sandbox Code Playgroud)

其中TableElement是GWT类,其方法insertRow定义为:

public final native TableRowElement insertRow(int index);
Run Code Online (Sandbox Code Playgroud)

当我开始测试时,我得到:

java.lang.UnsatisfiedLinkError: com.google.gwt.dom.client.TableElement.insertRow(I)Lcom/google/gwt/dom/client/TableRowElement;
    at com.google.gwt.dom.client.TableElement.insertRow(Native Method)
Run Code Online (Sandbox Code Playgroud)

我相信哪个与insertRow方法有关.有没有办法或解决方法来模拟Mockito的这些方法?

java gwt native-methods mockito

10
推荐指数
1
解决办法
5811
查看次数

Hibernate @OrderBy用于嵌套属性

我需要使用@OrderBy(JPA,Hibernate作为提供者)来为嵌套属性排序集合:

@OneToMany(mappedBy = "paramSpec", cascade = CascadeType.ALL)
@OrderBy("release.ordinal")
private List<PkdbParameter> pkdbParams;
Run Code Online (Sandbox Code Playgroud)

在PkdbParameter.java中:

...
@ManyToOne
@JoinColumn(name = "release_id")
private Release release;
...
Run Code Online (Sandbox Code Playgroud)

在Release.java中:

...
private int ordinal;
...
Run Code Online (Sandbox Code Playgroud)

(所有这些字段都提供简单的getter和setter)

不幸的是我收到了错误:

Caused by: org.hibernate.AnnotationException: property from @OrderBy clause not found: some.package.PkdbParameter.release.ordinal

这段代码出了什么问题?如果不可能使用嵌套属性表示法有没有其他方法来订购ordinal属性?

java orm hibernate jpa hibernate-mapping

10
推荐指数
2
解决办法
6969
查看次数