Articles of Java的

从terminal运行java程序

我正在开发一个Java程序运行在树莓派,我不能让它运行使用terminal。 它由两个类组成,这两个类都位于: /home/pi/JBerries/Access control/bin/access/control 另外请注意,这是一个使用swing制作的GUI程序。 这是我用来尝试运行它的命令: pi@raspberrypi ~/JBerries/Access control $ java -classpath .bin.access.control.accessControlUI 这就是它吐出来的东西: Usage: java [-options] class [args…] (to execute a class) or java [-options] -jar jarfile [args…] (to execute a jar file) where options include: -d32 use a 32-bit data model if available -d64 use a 64-bit data model if available -client to […]

使用httpclient \ kerberos以编程方式设置用户名,而不是提示

我有一个linux \ java6客户端,它将通过KERBEROS向sharepoint2010进行身份validation,然后使用Apache Commons HttpClient 4.2发送HTTP REST Web服务 如果我在连接我的客户端运行之前,从命令行"kinit myuser@mydomain"运行平滑。 我的问题是,如果我不运行kinit,我得到一个用户名提示。 如何在不提示用户名的情况下以编程方式进行身份validation,而无需运行命令行程序? (我创build和keytab,并在login.conf中定义它,以便照顾密码提示,而不是用户promt) public static void main(String[] args) throws Exception { System.setProperty("java.security.auth.login.config", "login.conf"); System.setProperty("java.security.krb5.conf", "krb5.conf"); System.setProperty("sun.security.krb5.debug", "true"); System.setProperty("javax.security.auth.useSubjectCredsOnly","false"); DefaultHttpClient httpclient = new DefaultHttpClient(); try { httpclient.getAuthSchemes().register(AuthPolicy.SPNEGO, new SPNegoSchemeFactory()); Credentials use_jaas_creds = new Credentials() { public String getPassword() { return null; } public Principal getUserPrincipal() { […]

安装Apache Tomcat

我已经按照这个教程( http://www.mulesoft.com/tomcat-linux#.URj9weCy1Nh )使用以下环境variables在debian wheezy上安装tomcat: Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.35 Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.35 Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.35/temp Using JRE_HOME: /usr/lib/jvm/java-6-openjdk-amd64/jre Using CLASSPATH: /usr/local/apache-tomcat-7.0.35/bin/bootstrap.jar:/usr/local/apache- tomcat-7.0.35/bin/tomcat-juli.jar 我已经给了tomcat用户一个bashlogin,当我运行./startup.sh没有任何反应,没有端口打开。 运行version.sh给我: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/catalina/util/ServerInfo Caused by: java.lang.ClassNotFoundException: org.apache.catalina.util.ServerInfo at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主要的类:org.apache.catalina.util.ServerInfo。 程序将会退出。 任何想法缺less什么?

在linux中编译并运行java程序,path为.java文件和外部jar的path

昨天我解决了一个问题,在这里在stackoverflow中的答案。 但是我最终还是遇到了其他的问题,但是我会尽力澄清: 我在/ home / demo / Desktop / xlsToCsv /目录下有一个项目文件夹,里面是java文件“xlsToCsv.java”,另一个目录是我需要的外部jar,位于/ home / demo / Desktop / xlsToCsv /瓶。 现在我需要编译和运行我的程序。 昨天我问了这个,我运行了一个命令,假定我已经在/ home / demo / Desktop / xlsToCsv /里面了,命令是: javac -cp“。:./ jars / *”xlsToCsv.java java -cp“。:./ jars / *”xlsToCsv 问题解决了,我可以运行我的程序,任何问题。 但是,我的程序从根目录运行,也就是当我打开linuxterminal时不需要做“cd”命令的目录。 所以,当我打开terminal时.java文件的path是: /家庭/演示/桌面/ xlsToCsv / 而jar文件夹的path是: /家庭/演示/桌面/ xlsToCsv /瓶/ * 有人可以向我解释我必须做什么,这是什么原因? 因为更多的运行程序,我想知道原因,并了解Java中的类path机制。 谢谢

Eclipse quicktip不会在Linux Ubuntu和Centos上显示“导入”build议

虽然我在多个网站上看到这个问题,但是我还没有find一个可行的解决scheme。 问题:当eclipse工具提示popup时,所有build议的“导入”字段保持空白。 我试过了: 我已经改变了Ubuntu的字体build议https://bugs.eclipse.org/bugs/show_bug.cgi?id=412021 我build议改变前景/背景颜色https://askubuntu.com/questions/45001/how-to-fix-black-tooltips-in-eclipse和https://plus.google.com/100162564505001485828/posts/WHBrbEyWPZk 我已经在Centos上对相同的问题进行了testing。 我已经尝试过不同版本的ADT和eclipse 我使用Eclipse版本4.2.1运行Ubuntu 13.04 ADT

JPS工具如何获取正在执行的主类或jar的名称

我想知道,JPS工具如何获得它在jvm进程中执行的主类的名称。 它是 jps -l 123 package.MainClass 456 /path/example.jar 我正在谈论Linux(我对Windows不感兴趣,我没有Win机器去试验)。 我可以想到2种方法 连接到正在讨论的JVM 从/proc文件系统 关于第一种方法,是使用本地JMX连接吗? 不过,它必须去/proc的pids。 有PID,所以它必须问OS jps列表本身也是 关于第二个select,我觉得这可能是正确的,因为 在命令行中,有-jar或MainClass /proc知道PID 在jps开始执行某些操作之前,它在/proc拥有自己的文件夹 但是 ,我在这里面临的问题很less。 当java命令非常长(例如,有非常长的-classpath参数)时,有关命令行的信息不适合在/proc为它保留的空间。 我的系统有4kB,而我在别处学到的东西,在OS代码中是硬连线的(改变它需要内核编译)。 但是,即使在这种情况下, jps仍然可以在某个地方获得主类。 怎么样? 我需要find比调用jps更快的方式来获取JVM进程。 当系统负载jps时候(例如,当JVM数量开始的时候), jps卡住了几秒钟(我已经看到它等待大约30秒)。

Linux上的Java服务 – 如何确保正常运行时间。 Deamon,Shell脚本还是Wrapper?

我有一个Java工作人员通过Web服务调用轮询外部队列系统的作业。 确保工人在任何特定时间运作的最坚实的方法是什么?

Hadoop安装:namenode无法启动

目前我正在尝试在我的ubuntu 14.10(32位utopic)上安装hadoop-2.6.0。 我遵循这里的指示: Install Apache Hadoop on Debian 9 / Ubuntu 16.04 / CentOS 7 (Single Node Cluster) 但是,当我尝试格式化namenode时,namenode无法启动。 这是当我尝试做hdfs或hadoop namenode -format时,我一直收到的: 15/04/11 16:32:13 FATAL namenode.NameNode: Fialed to start namenode java.lang.IllegalArgumentException: URI has an authority component at java.io.File.<init>(File.java:423) at org.apache.hadoop.hdfs.server.namenode.NNSStorage.getStorageDirectory(NNStorage.java:329) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournals(FSEditLog.java: 270) at org.apache.hadoop.hdfs.server.namenode.FSEditLog.initJournalsForWrite(FSEditLog.java:241) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:935) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1379) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504) 15/04/11 16:32:13 INFO util.ExitUtil: […]

构build可运行的jar时Ant会卡住

又是我。 我一直在尝试使用ant脚本将Java项目创build为可运行的jar。 这是我的build.xml <project name="simple-app" basedir="." default="main"> <property name="src.dir" value="src" /> <property name="build.dir" value="build" /> <property name="classes.dir" value="${build.dir}/classes" /> <property name="jar.dir" value="${build.dir}/jar" /> <property name="lib.dir" value="lib" /> <property name="main-class" value="app.App" /> <path id="classpath"> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> <dirset dir="${build.dir}"> <include name="classes"/> </dirset> </path> <target name="clean"> <delete dir="${build.dir}" /> </target> <target name="compile"> <mkdir dir="${classes.dir}"/> […]

在linux脚本中运行远程java服务器

我有一个名为Provider的Java实现的服务器,并启动它的Linux脚本。 #!/bin/bash echo "Provider" $JAVA_HOME/bin/java -cp /tmp Provider& $JAVA_HOME/bin/java -version rm /tmp/pid echo "$!"> /tmp/pid echo "Provider-finish" exit 0 当我想在不同的机器(机器2)上执行以下脚本时, root@machine1:/tmp# ssh machine2/tmp/runScript.sh Provider java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing) Provider-finish Waiting for connection 问题是,在脚本之上运行之后,它不会返回控制台,但在Provider启动的时候会挂起。 我已经分析了类似的概念,如Glassfish域的开始。 通过执行 ssh machine2 asadmin start-domain 它返回控制台没有任何问题,所以我可以得到执行状态“$?”