有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何制作runnablle jar,保持休眠状态。属性和log4j。财产分开

如何制作runnablle罐子,保持冬眠状态。属性和log4j。财产分开。 这样就可以根据操作系统和环境修改属性文件

开发平台在带有eclipse+maven+spring+hibernate的windows上 部署可以在windows/linux上进行

我按照以下步骤制作runnable jar。 出口->;可运行jar->;将所需库复制到生成的JAR旁边的子文件夹中

在windows中,该命令可以正常工作

c:\JavaTest> java -cp c:\JavaTest\testprg_lib;.; -jar testprg.jar

冬眠。属性和log4j。属性文件保存在c:\JavaTest目录中

在linux上使用以下命令运行时出现以下错误

/home/skay>;java-cp/home/skay/JavaTest/testprg_-lib::-jar testprg。罐子

> ---- error in linux ----  2015-09-25 18:45:52,675 INFO [org.springframework.context.annotation.AnnotationConfigApplicationContext]
> - <Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1f0d7b0:
> startup date [Fri Sep 25 18:45:52 IST 2015]; root of context
> hierarchy> 2015-09-25 18:45:53,294 INFO
> [org.springframework.jdbc.datasource.DriverManagerDataSource] -
> <Loaded JDBC driver: com.mysql.jdbc.Driver> 2015-09-25 18:45:53,425
> INFO [org.hibernate.annotations.common.Version] - <HCANN000001:
> Hibernate Commons Annotations {4.0.5.Final}> 2015-09-25 18:45:53,432
> INFO [org.hibernate.Version] - <HHH000412: Hibernate Core
> {4.3.8.Final}> 2015-09-25 18:45:53,434 INFO
> [org.hibernate.cfg.Environment] - <HHH000205: Loaded properties from
> resource hibernate.properties:
> {jdbc.url=jdbc:mysql://localhost:3306/TestPrg, jdbc.username=root,
> hibernate.dialect=org.hibernate.dialect.MySQLDialec,
> hibernate.show_sql=true,
> hibernate.bytecode.use_reflection_optimizer=false,
> jdbc.password=root123, hibernate.format_sql=true,
> jdbc.driverClassName=com.mysql.jdbc.Driver}> 2015-09-25 18:45:53,435
> INFO [org.hibernate.cfg.Environment] - <HHH000021: Bytecode provider
> name : javassist> 2015-09-25 18:45:53,881 WARN
> [org.springframework.context.annotation.AnnotationConfigApplicationContext]
> - <Exception encountered during context initialization - cancelling refresh attempt>
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'eventOnelyData': Injection of autowired
> dependencies failed; nested exception is
> org.springframework.beans.factory.BeanCreationException: Could not
> autowire field: private org.hibernate.SessionFactory
> com.cms.testprg.mdao.AbstractDao.sessionFactory; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'sessionFactory' defined in class path
> resource [com/cms/testprg/configuration/HibernateConfiguration.class]:
> Invocation of init method failed; nested exception is
> org.hibernate.boot.registry.selector.spi.StrategySelectionException:
> Unable to resolve name [org.hibernate.dialect.MySQLDialec] as strategy
> [org.hibernate.dialect.Dialect]   at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
>   at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
>   at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
>   at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
>   at
> org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
>   at
> com.cms.testprg.mainapp.MainAppTestPrg.<init>(MainAppTestPrg.java:117)
>   at
> com.cms.testprg.mainapp.MainAppTestPrg.main(MainAppTestPrg.java:75)
> Caused by: org.springframework.beans.factory.BeanCreationException:
> Could not autowire field: private org.hibernate.SessionFactory
> com.cms.testprg.mdao.AbstractDao.sessionFactory; nested exception is
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'sessionFactory' defined in class path
> resource [com/cms/testprg/configuration/HibernateConfiguration.class]:
> Invocation of init method failed; nested exception is
> org.hibernate.boot.registry.selector.spi.StrategySelectionException:
> Unable to resolve name [org.hibernate.dialect.MySQLDialec] as strategy
> [org.hibernate.dialect.Dialect]   at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
>   at
> org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
>   at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
>   ... 13 more Caused by:
> org.springframework.beans.factory.BeanCreationException: Error
> creating bean with name 'sessionFactory' defined in class path
> resource [com/cms/testprg/configuration/HibernateConfiguration.class]:
> Invocation of init method failed; nested exception is
> org.hibernate.boot.registry.selector.spi.StrategySelectionException:
> Unable to resolve name [org.hibernate.dialect.MySQLDialec] as strategy
> [org.hibernate.dialect.Dialect]   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
>   at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
>   at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1120)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1044)
>   at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
>   at
> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
>   ... 15 more Caused by:
> org.hibernate.boot.registry.selector.spi.StrategySelectionException:
> Unable to resolve name [org.hibernate.dialect.MySQLDialec] as strategy
> [org.hibernate.dialect.Dialect]   at
> org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128)
>   at
> org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveDefaultableStrategy(StrategySelectorImpl.java:155)
>   at
> org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.resolveStrategy(StrategySelectorImpl.java:136)
>   at
> org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect(DialectFactoryImpl.java:78)
>   at
> org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:68)
>   at
> org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:165)
>   at
> org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
>   at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
>   at
> org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
>   at
> org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
>   at
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
>   at
> org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)
>   at
> org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)
>   at
> org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)
>   at
> org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
>   at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
>   ... 25 more
> ------ end of error -------

休眠配置。爪哇

import java.util.Properties;
import javax.sql.DataSource;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.cms.testprg.configuration" })
@PropertySource(value = { "classpath:hibernate.properties" })
public class HibernateConfiguration {

    @Autowired
    private Environment environment;

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(new String[] { "com.cms.testprg.model" });
        sessionFactory.setHibernateProperties(hibernateProperties());
        return sessionFactory;
     }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
        return dataSource;
    }

    private Properties hibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
        properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
        properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
        return properties;        
    }

    @Bean
    @Autowired
    public HibernateTransactionManager transactionManager(SessionFactory s) {
       HibernateTransactionManager txManager = new HibernateTransactionManager();
       txManager.setSessionFactory(s);
       return txManager;
    }
}

AppConfig。爪哇

package com.cms.testprg.configuration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.cms.testprg")
public class AppConfig {

}

MainAppTestPrg。java:显示如何使用“appContext”保存数据的代码片段

public static void main(String[] args) {
     ........
 appContext = new AnnotationConfigApplicationContext(AppConfig.class);
  saveData(appContext);
 }

SaveToDB。爪哇

 public class SaveToDB {
     public void  saveData(AbstractApplicationContext context) {

          LoginDataService serviceLoginData = (LoginDataService) context.getBean("loginDataService");
          .......
          setting data into LoginInfo model object
          .......
          serviceLoginData.saveLoginData( LoginInfo);

     }
 }

pom文件

<!-- Make this jar executable -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/log4j.properties</exclude>
            <exclude>**/hibernate.properties</exclude>
          </excludes>
          <archive>
            <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.cms.testprg.mainapp.MainAppTestPrg</mainClass>
            <classpathPrefix>dependency-jars/</classpathPrefix>
            </manifest>
          </archive>
        </configuration>
    </plugin>

</plugins>

想知道下面的事情, -在linux上执行时出现错误的解决方案 -使用清单文件和清单文件中所有可能的参数 -在访问库和属性文件时具有相对路径


共 (1) 个答案

  1. # 1 楼答案

    这行配置中有一个错误

    hibernate.dialect=org.hibernate.dialect.MySQLDialec