小编Mik*_*378的帖子

管理java类路径上的冲突

我暴露了我的背景:

我有两个在独特的Weblogic Server上运行的Java程序:程序A和程序B.这些程序由两个ksh启动:

programA.ksh和programB.ksh

两者都需要C.jar但是在不同的版本中(但具有完全相同的包和类):

  • 程序A需要C-1.0.jar
  • 程序B需要C-2.0.jar

我确切地说两个程序共享相同的weblogic类路径.

所以,我的classpath按顺序包含:

.....

C-1.0.jar

C-2.0.jar

.....

我怎么能这样做,每个程序找到它的好库?

例如,根据我的实际配置,程序B将始终使用C-1.0.jar而不是C-2.0.jar,因为类路径上的优先级位置.

java dependencies classpath classloader

7
推荐指数
2
解决办法
7215
查看次数

Spring配置的Hibernate方言问题

我使用Spring配置的Hibernate(通过JPA),当我启动我的应用程序(在Tomcat 6上部署war)时,我收到此错误:

org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,因为我将hibernate方言设置如下:

p:databasePlatform="org.hibernate.dialect.MySQL5Dialect
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅我的完整applicationContext.xml:

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">


    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="com.mysql.jdbc.Driver"
          p:url="jdbc:mysql://localhost/room_management" p:username="root" p:password=""/>

    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:dataSource-ref="dataSource" p:persistenceUnitName="RoomManagement">
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                  p:database="MYSQL"
                  p:databasePlatform="org.hibernate.dialect.MySQL5Dialect"
                  p:showSql="true"/>
        </property>
    </bean>

    <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager"
          p:entityManagerFactory-ref="entityManagerFactory"/>

    <context:annotation-config/>


    <context:component-scan base-package="com.parisdescartes.roommanagement.*"/>

    <tx:annotation-driven/>

</beans>
Run Code Online (Sandbox Code Playgroud)

所以,我决定在META-INF/persistence.xml文件中精确地使用Hibernate Dialect,这次是有效的.在这里我如何精确它:

<properties>
            <property name="hibernate.dialect"
                      value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
Run Code Online (Sandbox Code Playgroud)

你知道为什么没有使用Spring配置设置Hibernate Dialect吗?

java mysql spring hibernate jpa

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

处理泛型时编译器的无用期望?

必须翻译泛型类型或方法(使用任何语言,而不仅仅是Java)的编译器原则上有两种选择:

代码专业化.编译器为泛型类型或方法的每个实例化生成新表示.例如,编译器将生成整数列表的代码以及字符串列表的附加,不同代码,日期列表,缓冲区列表等.

代码共享.编译器仅为泛型类型或方法的一个表示生成代码,并将泛型类型或方法的所有实例映射到唯一表示,执行类型检查并在需要时键入转换.

Java使用代码共享方法.我相信C#遵循代码专门化方法,所以下面的所有代码都是根据我使用C#的逻辑.

假设这个Java代码片段:

public class Test {

    public static void main(String[] args) {
        Test t = new Test();
        String[] newArray = t.toArray(new String[4]);
    }

    @SuppressWarnings("unchecked")
    public <T> T[] toArray(T[] a) {
        //5 as static size for the sample...
        return (T[]) Arrays.copyOf(a, 5, a.getClass());
    }
}
Run Code Online (Sandbox Code Playgroud)

代码共享方法将在类型擦除发生后导致此代码:

public class Test {

    public static void main(String[] args) {
       Test t = new Test();
       //Notice the cast added by the compiler here
       String[] newArray = …
Run Code Online (Sandbox Code Playgroud)

c# java compiler-construction generics casting

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

使用Play 2.1作为后端构建AngularJS客户端代码的好方法

我拥有一个Play 2.1应用程序.

最初,我使用了Play 2.1中的默认模板机制,直到我...学习了AngularJS.

现在,我显然希望我的客户端成为AngularJS应用程序.

然而,在网上冲浪时,我发现没有明确的方法来实现它:

  1. 让Play表现为一个简单的RESTful应用程序(删除view文件夹)并创建一个完全不同的项目来构建视图(由grunt.js初始化的AngularJS应用程序).
    优势:可能不那么混乱,前端和后端团队可以轻松地分开工作.缺点:AngularJS应用需要另一个HTTP服务器.

  2. 尝试将AngularJS应用程序与传统的Play工作流程完全集成.
    缺点:使用像AngularJS这样非常复杂的框架,会导致模板管理混淆,例如:scala.html(适用于Play)/ tpl.html(适用于Angular)... =>凌乱.

  3. 在播放项目中创建自定义文件夹,但与Play脚手架创建的初始文件夹不同.我们称之为myangularview传统view,而不是传统.然后,将grunt.js生成的静态内容发布到Play的public文件夹中,以便通过Play的路由从浏览器访问.
    优点:组件之间的SRP仍然得到了相当的尊重,并且不需要像1中那样为客户端使用另一个轻型HTTP服务器.

我指出了自己对优势和劣势的看法.

什么是实现Play与Angular结合的好方法?

architecture rest playframework-2.0 angularjs playframework-2.1

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

处理 POST api 和互联网连接丢失的良好实践

我拥有一个混合应用程序,其主要语言是Javascript(AngularJs)等。
基本上,我有一个旨在通过我的 REST api (在不同的服务器上)创建对象的表单。

我的save函数在概念上是这样的:

$scope.save = function () {
  var promise = CRUDService.post($scope.myElementToPost);
  promise.then(function (response) {
      //when 20X status
  }, function () {
      //when 40X - 50X status
  });            
};
Run Code Online (Sandbox Code Playgroud)

让我们假设触发该save函数,并且在POST请求之后,移动设备立即失去互联网连接,导致客户端出现错误,因此涉及错误回调

在这种“例外”情况下,该元素将在服务器的数据库上很好地创建,但不会触发 javascript 成功回调,因为互联网连接丢失会导致“错误”。

此案如何处理?
如何避免用户重新提交表单(他会不知道服务器端第一次创建元素)?

javascript rest http angularjs cordova

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

处理顺序拉取请求之间的依赖关系的好策略

Bob克隆了该项目,并A从创建一个本地分支master

鲍勃(Bob)添加了一些有用的帮助程序类,其中包括清理/重构单元测试设置,并清理所有现有测试。

Bob提交,推送到远程服务器,然后创建拉取请求,以便从John获得有关此重构的代码审查。

负责该项目的John忙了一个星期,因此无法立即进行审查。

在要求进行代码审查之后,Bob希望编写一些全新的测试文件和一组类,并以另一个单独的请求请求结束,因为它被视为正在使用一项新功能。
显然,鲍勃想使用他的新助手来处理这些测试文件。

采用哪种策略:

  • 对于那些新的单元测试,鲍勃应该创建一个B来源于分支master,而不是A因为A还没有任何评价。缺点是他还不能使用单元测试助手,因为它不存在B

  • Bob应该等待第一个请求的代码审查,合并到master,然后B从派生master。在这段时间里,他应该专注于其他不依赖于先前的拉取请求的作品。

  • 鲍勃应该BA这些帮助者那里派生并使用这些帮助者,冒着A在审核后不被接受的风险。显然导致拒绝B

  • 约翰应该摇摇晃晃的屁股,并作为一个好的领导者,应该在短时间内审查第一个拉动请求,以便鲍勃可以串连。

处理一系列多个请求之间的依赖关系的良好做法是什么?

git version-control github branching-and-merging pull-request

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

Scalac行为 - 无用的扫描?

在Martin Odersky的"Scala编程"一书中,它解释了为什么scalac看起来很慢的原因(第114页):

原因是每次编译器启动时,它都会花时间扫描jar文件的内容并进行其他初始工作,甚至在查看您提交给它的新源文件之前.

每次编译开始时扫描jar文件的编译好处是什么?实际上,如果大多数开发人员使用FSC(快速Scala编译器)来避免这种默认行为,为什么scala的作者没有删除这些扫描?

为什么javac表现不一样?

java compiler-construction scala compilation

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

Heroku Slug大小为222 MB/Play Framework 2.1 /

我在Heroku上的app slug大小表示222 MB.相当巨大,超过200MB允许.

因此,我检查过这些事情:

  • 检查我的源代码大小:89,9知道80,2M来自玩app的目标文件夹.

  • 检查我的.gitignore文件,以确保排除播放应用程序的目标文件夹.这是我的.gitignore文件:

.DS_Store         
logs   
project/project    
project/target   
target                 // target well precised here
tmp     
.history    
dist      
/.idea     
/ *.iml  //space here otherwise appears as a comment here    
/out     
/.idea_modules    
/.classpath    
/.project    
/RUNNING_PID     
/.settings
Run Code Online (Sandbox Code Playgroud)

检查我的SBT常春藤缓存大小:100,9 Mo

这里详细介绍了每个文件夹的大小(左侧):

MikaPc:缓存Mika $ du -xak.| sort -n | tail -50
1664 ./org.neo4j/neo4j/docs 1664 ./org.neo4j/neo4j/docs/neo4j-1.9.M05-javadoc.jar
1668 ./ org.neo4j/neo4j-kernel/docs
1668 ./org.neo4j/neo4j-kernel/docs/neo4j-kernel-1.9.M05-javadoc.jar
1680 ./org.springframework/spring-test 1748 ./org.neo4j/ neo4j
1752 ./org.aspectj/aspectjweaver/jars
1752 ./org.aspectj/aspectjweaver/jars/aspectjweaver-1.7.1.jar
1860 ./org.springframework/spring-jdbc
1888 ./org.springframework.data/spring-数据公地
1980年./org.scala-sbt/main/jars
1980年./org.scala-sbt/main/jars/main-0.12.2.jar
1992年./org.scala-sbt/main …

scala heroku sbt playframework-2.1

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

Bootstrap 3 /显示模式不能与javascript方式一起使用

我使用Bootstrap 3.0 的Modal功能.

我有这个代码:

<a data-toggle="modal" href="/myNestedContent" data-target="#myModal">
  Open the modal containing the content
</a>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
//nested content will be inserted here
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击锚点(链接)时,整个工作=>我看到带有内容的模态.

但是,当我使用Javascript方式(而不是链接)来显示这样的模态:

$('#myModal').modal('show'); 
Run Code Online (Sandbox Code Playgroud)

我只看到淡化效果而没有显示模态...

当我开始点击链接,那么调用javascript,它的工作原理.(副作用?)

当我以javascript方式开始时,即使链接仅显示没有模态的淡入淡出效果.

可能是..来自modalJavascript方法的错误?

有关信息,我使用的脚本的声明顺序正确:

<script src="//code.jquery.com/jquery.js"></script>
<script src="javascripts/jquery.form.min.js"></script> 
<script src="javascripts/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery modal-dialog twitter-bootstrap twitter-bootstrap-3

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

将iOS键盘上的"完成"按钮翻译成其他语言

使用Cordova/Phonegap,翻译iOS虚拟键盘上的"完成"按钮的最简单方法是什么?

例如,我的iPhone配置为使用法语.
但是,该按钮仍显示"完成"按钮,而不是经典的法语改编词:"确定".

translation ios cordova

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