我尝试了一切,但错误仍未解决
这是我的代码:
public String[] getWeekDays() {
LocalDate today = LocalDate.now();
LocalDate monday = today;
LocalDate tue = today;
LocalDate wed = today;
LocalDate thur = today;
LocalDate fri = today;
LocalDate sat = today;
LocalDate sunday = today;
while (sunday.getDayOfWeek() != DayOfWeek.SUNDAY){
sunday = sunday.minusDays(1);
}
while (monday.getDayOfWeek() != DayOfWeek.MONDAY){
monday = monday.minusDays(1);
}
while (tue.getDayOfWeek() != DayOfWeek.TUESDAY){
tue = tue.plusDays(1);
}
while (wed.getDayOfWeek() != DayOfWeek.WEDNESDAY){
wed = wed.plusDays(1);
}
while (thur.getDayOfWeek() != DayOfWeek.THURSDAY){
thur = thur.plusDays(1);
}
while (fri.getDayOfWeek() != DayOfWeek.FRIDAY){
fri = fri.plusDays(1);
}
while (sat.getDayOfWeek() != DayOfWeek.SATURDAY){
sat = sat.plusDays(1);
}
String[] days = {String.valueOf(sunday),String.valueOf(monday), String.valueOf(tue), String.valueOf(wed),
String.valueOf(thur), String.valueOf(fri), String.valueOf(sat)};
return days;
}
我已编写代码以获取一个星期的日期。当我运行此代码时,LocalDate.now();出现错误。该错误是“ java.lang.NoClassDefFoundError:无法解决以下问题:Ljava / time / LocalDate;”。 我已经在网上搜索了。有人说它要求API级别至少为27。我对API 27级别感到厌倦,但该错误未得到解决。我的目标设备更多地是我需要在此API级别上运行的API 26。并且还尝试添加“编译” java.time:LocalTime:1.8“”。这一项也不起作用。 请帮助我...
答案 0 :(得分:4)
NoClassDefFoundError
-如果Java虚拟机或 ClassLoader实例尝试加载类的定义(如 普通方法调用的一部分或创建新实例的一部分 使用新的表达式),则无法定义该类 找到。
<div>
<div>
Category 1
<div>
Subcategory 1
<div>
Privilege 11
</div>
</div>
</div>
<div>
Category 2
<div>
Subcategory 2
<div>
Privilege 21
</div>
<div>
Privilege 22
</div>
</div>
</div>
</div>
请确保您已在LocalDate today = LocalDate.now(); // Added 1.8
部分中添加了此内容。
build.gradle
仅供参考
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
程序包仅在API 26中添加。
所以,您应该设置
java.time
然后, minSdkVersion 26
。
答案 1 :(得分:2)
您正尝试在API级别低于26的设备(或模拟器)上运行您的应用。<script src="js/jquery-1.12.4.js"></script>
<script src="js/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(){
$( "#datepicker" ).datepicker({
closeText: 'Fermer',
prevText: 'Précédent',
nextText: 'Suivant',
currentText: 'Aujourd\'hui',
monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
weekHeader: 'Sem.',
dateFormat: 'dd/mm/yy',
timeFormat: 'HH:mm',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
});$.datepicker.setDefaults( $.datepicker.regional[ "fr" ] ); // texte en french marche pas
});
</script>
和其他java.time在级别26中引入。但是,有一个反向端口允许您可以在Android早期版本中使用最常用的80%。我建议这对您来说是一个很好的解决方案。
因此,将ThreeTenABP库添加到您的项目中。并确保您导入LocalDate
和org.threeten.bp.LocalDate
而不是org.threeten.bp.DayOfWeek
中的版本。那你应该没事。
曾经有人告诉我,依存关系是(我没有测试):
java.time
顺便说一句,您的代码可以写为:
compile group: 'org.threeten', name: 'threetenbp', version: '1.3.3', classifier: 'no-tzdb'
我使用了以下导入:
LocalDate today = LocalDate.now(ZoneId.of("America/Tortola"));
LocalDate monday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
LocalDate tue = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.TUESDAY));
LocalDate wed = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
LocalDate thur = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.THURSDAY));
LocalDate fri = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
LocalDate sat = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY));
LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
import org.threeten.bp.DayOfWeek;
import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.temporal.TemporalAdjusters;
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 2 :(得分:0)
如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为常规方法调用的一部分或使用新表达式创建新实例的一部分),则抛出该错误,并且该类的定义无法被发现。 搜索的类定义在编译当前正在执行的类时存在,但无法再找到该定义。
答案 3 :(得分:0)
使用 SimpleDateFormat 和日历。您可能还需要针对 sdk 26 前后的不同实现
private String getCurrentDateTime() {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
Log.d(TAG, "getCurrentDateTime: greater than O");
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("h:m a"));
} else{
Log.d(TAG, "getCurrentDateTime: less than O");
SimpleDateFormat SDFormat = new SimpleDateFormat("h:m a");
return SDFormat.format(new Date());
}
}