`

linux下java项目移植部署心得

阅读更多

一.验证码问题,,在windows下验证码运行正常,到了linux下验证码程序走不通也不抛异常,什么现象都没有就是走不动了,问题可能在于你的linux服务器没有配置成java.awt.headless 可以执行。。。在程序中加入:

 

System.setProperty("java.awt.headless", "true");

二.netstat -nap |grep java(端口号)  可以查看指定程序的端口情况,或者是指定端口的程序运行情况

   ps -ef | grep java  也是如此

  杀某个端口下的程序,,用ps那个命令查出pid,然后执行kill命令。。强制杀用-9参数。

三.改变一个文件的权限用命令chmod +x file,,这个是最常用的。。什么权限都+上了。然后就可以执行或者修改

四.现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。

 


  1.修改/etc/profile文件
  如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。

  (1)用文本编辑器打开/etc/profile

  (2)在profile文件末尾加入:
  JAVA_HOME=/usr/share/jdk1.5.0_05
  PATH=$JAVA_HOME/bin:$PATH
  CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  export JAVA_HOME
  export PATH
  export CLASSPATH

  (3)重新登录

  注解:
  a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录

  b. linux下用冒号“:”来分隔路径

  c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。

  d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

  e. export是把这三个变量导出为全局变量。

  f. 大小写必须严格区分。

  2. 修改.bashrc文件  
  这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。

  (1)用文本编辑器打开用户目录下的.bashrc文件

  (2)在.bashrc文件末尾加入:  
  set JAVA_HOME=/usr/share/jdk1.5.0_05
  export JAVA_HOME
  set PATH=$JAVA_HOME/bin:$PATH
  export PATH
  set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  export CLASSPATH

  (3)重新登录

  3. 直接在shell下设置变量
  不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。

  只需在shell终端执行下列命令:
  export JAVA_HOME=/usr/share/jdk1.5.0_05
  export PATH=$JAVA_HOME/bin:$PATH
  export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

五.class版本问题解决

Unsupported major.minor version 49.0错误详解

 

一:要解决的问题

我 们在尝鲜 JDK1.5 的时候,相信不少人遇到过 Unsupported major.minor version 49.0 错误,当时定会茫然不知所措。因为刚开始那会儿,网上与此相关的中文资料还不多,现在好了,网上一找就知道是如何解决,大多会告诉你要使用 JDK 1.4 重新编译。那么至于为什么,那个 major.minor 究竟为何物呢?这就是本篇来讲的内容,以使未错而先知。

我觉得我是比 较幸运的,因为在遇到那个错误之前已研读过《深入 Java 虚拟机》第二版,英文原书名为《Inside the Java Virtual Machine》( Second Edition),看时已知晓 major.minor 藏匿于何处,但没有切身体会,待到与 Unsupported major.minor version 49.0 真正会面试,正好是给我验证了一个事实。

首先我们要对 Unsupported major.minor version 49.0 建立的直接感觉是:JDK1.5 编译出来的类不能在 JVM 1.4 下运行,必须编译成 JVM 1.4 下能运行的类。(当然,也许你用的还是 JVM 1.3 或 JVM 1.2,那么就要编译成目标 JVM 能认可的类)。这也解决问题的方向。

二:major.minor 栖身于何处

何谓 major.minor,且又居身于何处呢?先感性认识并找到 major.minor 来。

写一个 Java Hello World! 代码,然后用 JDK 1.5 的编译器编译成,HelloWorld.java



public static void "Hello, World!" package com.unmi; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }

用 JDK 1.5 的 javac -d . HelloWorld.java 编译出来的字节码 HelloWorld.class 用 UltraEdit 打开来的内容如图所示:


[转]Unsupported major.minor version 49.0错误详解_天高地迥兴尽悲来_新浪博客 - 澎湃 - 一线牵

从 上图中我们看出来了什么是 major.minor version 了,它相当于一个软件的主次版本号,只是在这里是标识的一个 Java Class 的主版本号和次版本号,同时我们看到 minor_version 为 0x0000,major_version 为 0x0031,转换为十制数分别为0 和 49,即 major.minor 就是 49.0 了。

三:何谓 major.minor 以及何用

Class 文件的第 5-8 字节为 minor_version 和 major_version。Java class 文件格式可能会加入新特性。class 文件格式一旦发生变化,版本号也会随之变化。对于 JVM 来说,版本号确定了特定的 class 文件格式,通常只有给定主版本号和一系列次版本号后,JVM 才能够读取 class 文件。如果 class 文件的版本号超出了 JVM 所能处理的有效范围,JVM 将不会处理该 class 文件。

在 Sun 的 JDK 1.0.2 发布版中,JVM 实现支持从 45.0 到 45.3 的 class 文件格式。在所有 JDK 1.1 发布版中的 JVM 都能够支持版本从 45.0 到 45.65535 的 class 文件格式。在 Sun 的 1.2 版本的 SDK 中,JVM 能够支持从版本 45.0 到46.0 的 class 文件格式。

1.0 或 1.2 版本的编译器能够产生版本号为 45.3 的 class 文件。在 Sun 的 1.2 版本 SDK 中,Javac 编译器默认产生版本号为 45.3 的 class 文件。但如果在 javac 命令行中指定了 -target 1.2 标志,1.2 版本的编译器将产生版本号为 46.0 的 class 文件。1.0 或 1.1 版本的 JVM 上不能运行使用-target 1.2 标志所产生的 class 文件。

JVM 实现的 第二版中修改了对 class 文件主版本号和次版本号的解释。对于第二版而言,class 文件的主版本号与 Java 平台主发布版的版本号保持一致(例如:在 Java 2 平台发布版上,主版本号从 45 升至 46),次版本号与特定主平台发布版的各个发布版相关。因此,尽管不同的 class 文件格式可以由不同的版本号表示,但版本号不一样并不代表 class 文件格式不同。版本号不同的原因可能只是因为 class 文件由不同发布版本的 java 平台产生,可能 class 文件的格式并没有改变。

上面三段节选自《深入 Java 虚拟机》,啰嗦一堆,JDK 1.2 开启了 Java 2 的时代,但那个年代仍然离我们很远,我们当中很多少直接跳在 JDK 1.4 上的,我也差不多,只是项目要求不得不在一段时间里委屈在 JDK 1.3 上。不过大致我们可以得到的信息就是每个版本的 JDK 编译器编译出的 class 文件中都带有一个版本号,不同的 JVM 能接受一个范围 class 版本号,超出范围则要出错。不过一般都是能向后兼容的,知道 Sun 在做 Solaris 的一句口号吗?保持对先前版本的 100% 二进制兼容性,这也是对客户的投资保护。

解决方案:遇到这个问题就只有重新的编译项目,,然后部署,,一个J2EE项目是在被导入的时候编译,首先要修改IDE所用jdk的版本,,然后把项目导入进去以后再单独修改项目的jdk版本,,具体的修改看图片。。


 



 

 

 就这几个地方就可以了。。


六.su的应用
功能:变更用户
用法:su [-flmp][--help][--version][-][-c <指令>][-s][用户帐号]
参数:
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份
--session-command=COMMAND:跟-c相同,但是不生成新的会话
-f或--fast:适用于csh与tsch,使shell不用去读取启动文件
-.-l或--login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME,PATH变量
-m,-p或--preserve-environment:变更身份时,不要变更环境变量
-s或--shell= :指定要执行的shell
--help:显示帮助
--version :显示版本信息

例子:su回车直接是切换到root用户
su - 用户名  切换到用户并且带着所有的全局环境变量
sudo 用户  则是带着用的权限

 

  • 大小: 33.7 KB
  • 大小: 28.9 KB
  • 大小: 29.9 KB
  • 大小: 30.6 KB
分享到:
评论
1 楼 jimoshutong 2011-01-12  

正在找怎么把windows项目像linux移植的教程,学习啦

相关推荐

    Java项目从Windows开发平台到Linux服务器的移植.pdf

    移植Java项目时要特别注意代码和依赖环境的兼容性问题,例如操作系统相关的API调用。在Linux服务器上,如果遇到不兼容的情况,可能需要修改代码或者寻找替代方法。 8. 文档和组件库引用: 在Java项目中,经常需要...

    Java虚拟机在ARM_Linux平台的移植全过程

    ### Java虚拟机在ARM_Linux平台的移植全过程 #### 一、引言 随着软件行业的开源风气日益增强,开源的Java虚拟机(JVM)的开发变得越来越活跃。市场上已经出现了一系列成熟且易于移植的开源Java虚拟机,例如Kaffe、...

    Java虚拟机在ARM—Linux平台的移植研究.pdf

    在嵌入式Linux系统下,Java虚拟机的移植是实现Java程序在ARM平台上的运行环境的重要步骤。该研究的目的是实现Java虚拟机在ARM—Linux平台上的移植,结合Java核心类库GNU Classpath的裁减和安装,实现在嵌入式ARM—...

    Linux下的程序移植到windows

    "Linux下的程序移植到Windows" Linux下的程序移植到Windows需要修改的地方是非常重要的,因为Linux和Windows是两种不同的操作系统,它们之间存在很多差异。因此,在移植程序时需要注意许多问题,本文将介绍其中的...

    Linux下GDB的移植

    Linux下GDB的移植 GDB是GNU开放源代码的调试器,广泛应用于Linux系统中。为了在Linux下进行程序调试,需要将GDB移植到目标平台上。本文将详细介绍GDB的移植步骤,包括准备工作、编译ncurses、编译GDB、测试等环节。...

    Lwip协议栈在嵌入式Linux下的移植与实现.pdf

    Lwip 协议栈在嵌入式 Linux 下的移植与实现 Lwip 协议栈是一种轻量级的 TCP/IP 协议栈,广泛应用于嵌入式系统中。在嵌入式 Linux 操作系统下,Lwip 协议栈的移植和实现是非常重要的。本文将详细介绍 Lwip 协议栈在...

    java部署规范V3.0

    "java部署规范V3.0" Java 部署规范V3.0是为了适应公司项目逐渐由.NET 转向 ...Java 部署规范V3.0旨在为 Java 新项目及涉及项目技术管理涉及人员提供详细的指导和指南,以确保项目的部署和管理符合公司的规范和标准。

    docker部署Java项目流程

    Docker 部署 Java 项目流程 Docker 是一个开源的应用容器引擎,基于 Go 语言开发并遵从 Apache2.0 协议开源。使用 Docker 可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器...

    基于Hisi3559A移植部署YOLOv5算法C源码+项目使用说明.zip

    基于Hisi3559A移植部署YOLOv5算法C源码+项目使用说明.zip基于Hisi3559A移植部署YOLOv5算法C源码+项目使用说明.zip基于Hisi3559A移植部署YOLOv5算法C源码+项目使用说明.zip基于Hisi3559A移植部署YOLOv5算法C源码+项目...

    Linux下网上邻居samba的移植

    ### Linux下网上邻居Samba的移植 #### 一、引言 Samba是一个在Linux系统上实现SMB(Server Message Block)协议的软件包,它可以让Linux系统与运行Windows系统的计算机进行文件共享和打印服务。Samba服务器可以作为...

    linux与window平台移植

    Linux与Window平台移植 Linux与Window平台移植是指在不同的操作系统平台之间实现移植的技术,包括从硬件抽象层到操作系统环境的建立,以及任务调度、时钟管理、串口驱动和命令行 Shell 的实现。本文将对 Linux 与 ...

    Vxworks应用程序移植到Linux的方案

    在嵌入式系统开发领域,从VxWorks到Linux的移植是一项常见的任务,尤其是在追求开源、灵活和成本效益更高的解决方案时。VxWorks是一个实时操作系统(RTOS),以其高性能和确定性而闻名,而Linux则是一个功能强大且...

    LINUX 移植 论文 参考 移植过程

    LINUX 移植论文参考移植过程 本文档介绍了 Linux 内核移植到 S3C2440 开发板的详细过程,涵盖了从下载最新的稳定版本的 Linux 内核到编译和配置整个移植过程。 一、下载最新的稳定版本的 Linux 内核 在下载最新的...

    从Windows到Linux的C程序移植研究.pdf

    在现代信息技术的快速发展下,跨操作系统的软件移植日益频繁。对于C语言编写的程序,从Windows到...随着开源技术的不断进步,Linux平台下的C程序移植将更加高效和简便,这对于推动软件开发行业的创新发展具有重要意义。

    Java虚拟机的移植

    - 掌握Linux下的程序编译与交叉编译过程,包括对编译器的配置。 - 能够根据目标硬件特性重新编译和烧写开发板内核镜像。 六、移植过程中的常见问题及解决方法: - 修改Makefile或者在configure时进行调整以解决平台...

    Linux系统移植项目报告

    《Linux系统移植项目报告》是一份详尽的教程,涵盖了从基础到高级的Linux系统移植步骤,旨在帮助读者理解和实践Linux在特定硬件平台上的移植工作。以下是对该报告中的主要知识点的详细阐述: 1. **U-boot移植**: ...

    嵌入式Linux系统移植.pdf

    "嵌入式Linux系统移植" 嵌入式Linux系统移植是指将Linux操作系统移植到嵌入式设备中,以满足各种应用需求。嵌入式Linux系统移植的重要性在于其广泛的应用场景,例如手机、洗衣机、汽车等设备都需要嵌入式Linux系统...

    嵌入式Linux系统的移植研究.pdf

    "嵌入式Linux系统的移植研究" 嵌入式Linux系统的移植研究是指在嵌入式系统中实现Linux操作系统的移植,涉及到嵌入式系统的设计、开发、测试和移植等方面。该研究领域涵盖了嵌入式系统的软硬件设计、Linux操作系统的...

    Qt软键盘linux下实现,可以移植到ARM

    【Qt软键盘Linux下实现及移植到ARM】 在嵌入式设备或移动设备开发中,尤其是在没有物理键盘的Linux系统上,实现一个软键盘是非常重要的功能。Qt作为一个跨平台的图形用户界面(GUI)框架,提供了丰富的工具和API来...

    VS2008项目移植到Linux的makefile转化工具。

    然而,当需要将这些项目移植到Linux系统时,开发者通常需要手动重构构建过程,因为VS2008使用的项目文件格式与Linux下的Makefile系统不兼容。为了解决这个问题,出现了"VS2008项目移植到Linux的makefile转化工具"。 ...

Global site tag (gtag.js) - Google Analytics