Scalac命令使用注意一则

简介:

  郁闷的半天,发现一个很诡异的问题,测试版本是scala2.8。这个问题在javac下应该是一样的解决方法

 
在eclipse默认工程目录下,为了偷懒,把所有的jar包用*.jar表示,执行编译命令
        scalac -cp lib/*.jar -d bin src/test/*.scala 
结果报
error: IO error while decoding lib/scala-library.jar with UTF-8
Please try specifying another one using the -encoding option
java.io.IOException: MALFORMED[1]
at scala.tools.nsc.io.SourceReader$.decode(SourceReader.scala:137)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:91)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:46)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:65)
at scala.tools.nsc.Global.getSourceFile(Global.scala:228)
at scala.tools.nsc.Global.getSourceFile(Global.scala:234)
at scala.tools.nsc.Global$Run$$anonfun$6.apply(Global.scala:811)
at scala.tools.nsc.Global$Run$$anonfun$6.apply(Global.scala:811)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:206)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:206)
at scala.collection.immutable.List.map(List.scala:45)
at scala.tools.nsc.Global$Run.compile(Global.scala:811)
at scala.tools.nsc.Main$.process(Main.scala:108)
at scala.tools.nsc.Main$.main(Main.scala:122)
at scala.tools.nsc.Main.main(Main.scala)
这个报错是因为把class当成普通文件了,如果用scala test.class,也会报这个错
 
但是执行
       scalac -cp bin/ -d bin src/testimport/*.scala 
却是正确的。说明cp参数这么写应该没有错,上面的那个错在哪里了呢。
 
结果凑巧要写一个既包含jar包的,又要有bin里面的classes,写成
       scalac -cp bin/:lib/*.jar -d bin src/testimport/*.scala 
结果这下对了
 
然后尝试了一下,如果是要使用*的话,前面必须带上":"
用IDE习惯了,手动编译这些细节问题都没遇到过,狂汗...
 
补充:
比较好的喜欢是在-cp参数后面以.:作为开头,
比如你要执行的class就在当前目录下,这样就已经把目录带上了,否则提示找不到该class会比较费解


本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/425472,如需转载请自行联系原作者
相关文章
|
Kubernetes 安全 网络协议
【K8S系列】深入解析k8s网络插件—Calico
【K8S系列】深入解析k8s网络插件—Calico
5180 0
|
存储 SQL 关系型数据库
面试官:你能聊聊 binlog、undo log、redo log 吗?
本文详细解析了MySQL数据库中的三种日志:binlog、undo log和redo log。binlog用于记录数据库的所有表结构变更及数据修改,支持归档、主从复制和数据恢复;undo log用于事务回滚,确保事务的原子性和实现多版本控制;redo log则用于crash-safe,确保数据库异常重启后已提交记录不丢失。文章通过实例和图表,深入浅出地介绍了每种日志的特点、应用场景及其实现机制。适合数据库开发者和运维人员阅读。
693 2
|
图形学 开发者
【实战优化】U3D物理引擎碰撞检测精调秘籍:告别穿透与粘滞,重塑真实游戏体验
【7月更文第12天】在Unity3D游戏开发中,精准的碰撞检测是营造沉浸式游戏体验的关键。然而,开发者常面临游戏角色或物体间的碰撞反应不自然,如穿透、粘滞现象,这些问题不仅破坏了游戏的真实感,还严重影响了玩家的体验。本文将深入探讨U3D物理引擎中碰撞检测不准确的根源,并提出一系列行之有效的调优策略,辅以代码实例,帮助开发者打造流畅自然的物理互动。
1112 1
|
负载均衡 安全 网络安全
|
API 数据安全/隐私保护
Outlook邮箱IMAP服务器设置怎么做?
Outlook邮箱IMAP服务器设置怎么做?
|
存储 人工智能 数据库
亚马逊 AWSVS 阿里云 | 轻量应用服务器性能评测对比
亚马逊 AWSVS 阿里云 | 轻量应用服务器性能评测对比
|
关系型数据库 MySQL 数据库
Sqlmap学习 -- Tapmer绕过脚本(三)
Sqlmap学习 -- Tapmer绕过脚本(三)
364 0
|
缓存 Java
f you already have a JDK installed, define a JAVA HOME variable in Computer > System Properties > Sy
f you already have a JDK installed, define a JAVA HOME variable in Computer > System Properties > Sy
1409 0
f you already have a JDK installed, define a JAVA HOME variable in Computer > System Properties > Sy
|
数据采集 监控 Kubernetes
带你读《企业级云原生白皮书项目实战》——4.3.2 ARMS优势
带你读《企业级云原生白皮书项目实战》——4.3.2 ARMS优势
253 0
|
XML JSON 数据格式
Jayway - Json-Path 使用(一)
Jayway - Json-Path 使用(一)
1153 0
Jayway - Json-Path 使用(一)