java classpath问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java classpath问题相关的知识,希望对你有一定的参考价值。
我把环境变量里的classpath变量删除后 并且也没用set设置 javac 里的classpath参数也没设置 而用javac编译含有 System.out.println()方法的类却能编译通过 而且运行正常 请问没有classpath地址 javac程序是如何知道java.lang包里的System类的呢 ?
隐藏了么?那有什么必要隐藏呢?而且隐藏怎么能实现的?
比如我把classpath地址设置为我开发的classes文件夹 比如C:\app\classes
那么javac是怎么找到位于java安装文件夹里的System类的呢
javac程序没有遵循java编程规则么?
因此classpath与你说的java.lang包是没有任何关系的。如果你要使用java自带包中的内容,只要在程序中使用import语句把相应的包包含进来就可以了。而java.lang包在java中是默认使用import语句包含进来了的,因此即使程序中没有import java.lang.*;的语句,但java还是包含进来了的。因此你在程序中可以使用System类进行输出,这与classpath毫无关系。 参考技术A JAVAC writen in C
javac的职责就是把 .java文件转化为字节码文件.class,当然有一定的转化语法
JAVA writen in C too
java 通过C语言 来创建一个JVM,创建完成后。由JVM来装载一些classpath包 和其他东东。我怀疑,System是在这个时候装载进去的、 参考技术B classpath的含义:
在指定的目录下寻找自编或第三方包的class文件.
java classpath默认设置为"."(当前目录) 参考技术C 一切都很正常。。。lz可以看看网上有关环境变量的文章。本回答被提问者采纳
sbt 运行时 classPath 与编译 classPath 不匹配,导致 java.lang.NoClassDefFoundError
【中文标题】sbt 运行时 classPath 与编译 classPath 不匹配,导致 java.lang.NoClassDefFoundError【英文标题】:sbt runtime classPath does not match compile classPath, causes java.lang.NoClassDefFoundError 【发布时间】:2016-02-10 17:31:15 【问题描述】:根据“show runtime:fullClasspath”的运行时类路径仅包含 target/scala-2.11/classes 和 ~/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.7。罐。 compile:fullClasspath 包含 ~/.ivy2/cache 下的所有 libraryDependencies jar 位置。为什么是这样?我在 sbt 运行时收到 java.lang.NoClassDefFoundError。
build.sbt:
name := "my-server"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= List(
"com.typesafe.slick" %% "slick" % "3.1.0" % "provided",
"com.twitter.finatra" %% "finatra-http" % "2.1.0" % "provided",
"com.roundeights" %% "hasher" % "1.2.0" % "provided",
"com.twitter" %% "util-logging" % "6.29.0" % "provided"
)
resolvers +=
"Twitter" at "http://maven.twttr.com"
resolvers ++= Seq("RoundEights" at "http://maven.spikemark.net/roundeights")
sbt 运行结果:
Exception in thread "main" java.lang.NoClassDefFoundError: com/twitter/logging/Logger
sbt 版本 0.13.8
【问题讨论】:
【参考方案1】:删除“提供”是这里的修复 - 我错误地使用它来解决依赖项的模棱两可的颠覆(归功于 freenode #scala 的 pfn)
【讨论】:
以上是关于java classpath问题的主要内容,如果未能解决你的问题,请参考以下文章